java并发专题
Stalary
Knowledge never overflow
展开
-
并发工具包之CountDownLatch|CyclicBarrier|Semaphore
在java的并发包中为我们提供了三种并发控制的手段,他们分别是CountDownLatch|CyclicBarrier|Semaphore,今天我们分别来讲解一下这三种方法以及使用场景CountDownLatch特点: 首先设置一个计数器,在线程完成数达到计数器阈值之前,其他的一个或多个线程都会等待。计数器无法重置,一旦到达阈值,就会释放所有线程适用场景: 实现并行(可以用来...原创 2018-01-31 00:41:41 · 188 阅读 · 0 评论 -
五种java线程池的使用与比较
今天对五种常见的java内置线程池进行讲解。线程使用的demopublic static void cache() { ExecutorService pool = Executors.newCachedThreadPool(); long start = System.currentTimeMillis(); pool.execut...原创 2018-01-31 00:44:35 · 2268 阅读 · 0 评论 -
偏向锁、轻量级锁、重量级锁的升级以及区别
今天来讲一下偏向锁、轻量级锁、重量级锁的升级以及区别。锁的状态:无锁状态偏向锁状态轻量级锁状态重量级锁状态四种状态会随着竞争的情况逐渐升级,而且是不可逆的过程,即不可降级。 要注意的是,这四种状态都不是Java语言中的锁,而是Jvm为了提高锁的获取与释放效率而做的优化(使用synchronized时)。首先通过一个小例子来解释一下三种锁的区别: 假如原创 2018-02-04 20:22:54 · 2780 阅读 · 1 评论 -
ReentranLock重入锁源码分析
今天来分析一下重入锁的源码ReentranLock定义重入锁ReentranLock是一种支持重进入的锁,表示该锁可以支持一个线程对资源重复加锁,并且分为公平锁和非公平锁synchronizedsynchronized大家一定都很熟悉了,这也是一种隐式的重入锁,是一种非公平锁重进入的实现当线程再次获取锁时,锁需要先判断该线程是否为当前占据锁的线程,如果是则再次...原创 2018-02-27 00:09:35 · 447 阅读 · 0 评论 -
并发框架之Fork/Join框架
今天来介绍一下java并发框架之Fork/Join初探Fork/Join:分割任务 使用一个fork类来把大任务分割成子任务,当子任务还较大时,不停的分割,直到分割到子任务足够小。(类似于归并排序的分化阶段)执行任务合并结果 分割后的子任务分别放在双端队列里,然后开启多线程分别从双端队列获取任务执行,子任务执行完的结果都放在一个队列里,然后启动一个线程从队...原创 2018-02-08 17:43:45 · 293 阅读 · 1 评论 -
volatitle深入解析
今天来介绍一下volatitlevolatile是什么volatitle是一个确保共享变量能够被准确和一致地更新的关键字(保证可见性),只能对变量使用volatile是如何保证可见性的在对有volatile修饰符修饰的共享变量进行写操作时,汇编代码回多一条lock前缀的指令。该指令有如下两个作用:将当前缓存行的数据回写到内存中使其他cpu里缓存了该内存地址的数据无效...原创 2018-03-01 11:50:14 · 4130 阅读 · 0 评论