首页
AI Coding
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
Coding挖掘机
掘友等级
Dev
|
XiamenAir
Java/Go/Redis/Kafka/Linux/Vue
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
12
文章 12
沸点 0
赞
12
返回
|
搜索文章
赞
文章( 12 )
沸点( 0 )
并发-4-volatile
特殊情况:主存中i=0,程序A和B分别读i=0至核心1和核心2(多核CPU)的cache,进行i=i+1,则对这个共享变量虽然操作了两次,但是最后写回主存还是i=1。具体过程如下: 在JVM规范中,试图定义了一种Java内存模型,(java memeory model,JMM)…
并发-0-同步/异步/阻塞/非阻塞/进程/线程
在异步阻塞IO中,用户线程收到通知后自行读取数据、处理数据。而在异步非阻塞IO中,用户线程收到通知时,数据已经被准备好,用户线程可以直接使用(省略了读取数据这一过程) 但是人们对程序实时性的要求越来越高。比如对QQ音乐来说,它不仅要处理用户所发送的交互请求,还要播放歌曲。假设某…
并发-1-并发模型
在并行工作者模式中,委派者接收到任务(如请求监听线程),分发给工作者完成任务(如请求处理线程)。举个例子,如果在汽车工厂执行该模式,包工头(请求监听线程)负责分发工作给工人(请求处理线程),每个工人拿到图纸之后,该工人从头到尾负责整台汽车的生产,但是同个工人可能负责多台汽车的生…
并发-3-synchronized与ReentrantLock
lockInterruptibly允许在等待时由其它线程调用等待线程的Thread.interrupt方法来中断等待线程的等待而直接返回,这时不用获取锁,而会抛出一个InterruptedException。 lock方法不允许Thread.interrupt中断,即使检测到T…
并发-2-Thread和Runnable的API
4.yield()使线程让出CPU去执行相同优先级的其他程序,但是不会释放锁,(内部还是sleep)执行yield()之后该线程直接进入就绪状态再次参与竞争,生产中很少使用。 这样一来便可在线程外通过调用setStop方法来终止while循环。
并发-5-ThreadLocal
由于每次都需要在进行数据业务逻辑时才进行数据库连接创建,数据库连接其实是保存在方法栈中的,相互之间不影响,也就不存在了同步的问题。 首先,在每个线程Thread内部有一个ThreadLocal.ThreadLocalMap类型的成员变量threadLocals,这个thread…
并发-6-wait、notify、Semaphore、CountDownLatch、CyclicBarrier
Java 提供了经典信号量(Semaphore)的实现,通过控制一定数量的允许(permit)的方式,来达到限制通用资源访问的目的。 触发屏障,当await自动达到屏障数量时,触发屏障操作。可重复使用!
并发-7-同步容器和ConcurrentHashMap
JDK提供给了很多容器,其中有list,set,queue,map等。 这里我们挑出List单讲。 众所周知,很多书上,我们看到Arraylist并不是线程安全的,Vector是线程安全的。 对比发现,Vector之所以是线程安全的,是因为Vector对所有的方法使用synch…
并发-8-ThreadPoolExecutor
线程是不能够重复启动的,创建或销毁线程存在一定的开销,所以利用线程池技术来提高系统资源利用效率,并简化线程管理,已经是非常成熟的选择。 假如有一个工厂,工厂里面有10个工人,每个工人同时只能做一件任务。因此只要当10个工人中有工人是空闲的,来了任务就分配给空闲的工人做;当10个…
并发-9-Callable和Future
Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果 3)能够获取任务执行结果。 因为Future只是一个接口,所以是无法直接用来创建对象使用的,因此就有…
下一页
个人成就
文章被点赞
55
文章被阅读
8,798
掘力值
249
关注了
11
关注者
11
收藏集
0
关注标签
5
加入于
2018-07-05