
Java并发
sunct
来自于猩球的追逐者
展开
-
java AQS源码阅读共享锁的实现(转载)
转载:https://www.jianshu.com/p/76949bca657a, 补充了红色部分一、独占锁与共享锁区别 1)独占功能: 新线程执行时,先判断同步队列是否有节点,如果有,则进入同步队列的队尾 当锁被头节点获取后,只有头节点获取锁,其余节点的线程继续沉睡,等待锁被释放后,才会唤醒下一个节点的线程。 2)共享功能: 新线程...转载 2019-11-12 10:53:17 · 369 阅读 · 0 评论 -
Java 知识点总结之Java 并发 API(一)
1、什么是CAS 答:(1)CAS是一种系统原语(所谓原语属于操作系统用语范畴。原语由若干条指令组成的,用于完成一定功能的一个过程。primitive or atomic action 是由若干个机器指令构成的完成某种特定功能的一段程序,具有不可分割性·即原语的执行必须是连续的,在执行过程中不允许被中断)。(2)CAS是Compare And Set的缩写。CAS有3个操作数,内存值V,旧的预期值...原创 2018-03-29 14:07:52 · 330 阅读 · 0 评论 -
Java 知识点总结之Java 并发 API(二)
6、CountDownLatch的工作原理答:CountDownLatch采用AQS(AbstractQueuedSynchronizer)队列实现,先初始化Count,再countDown,当计数器值到达0时,表示所有任务都执行完了。/** * 用CountDownLatch实现多个任务并发计算,并汇总结果 * @author changtan.sun * */public class...原创 2018-03-29 14:14:12 · 179 阅读 · 0 评论 -
理解ThreadPoolExecutor的corePoolSize、maximumPoolSize和poolSize参数(这个比较深刻,比较准确)
ThreadPoolExecutor与线程相关的几个成员变量是:keepAliveTime、allowCoreThreadTimeOut、poolSize、corePoolSize、maximumPoolSize,它们共同负责线程的创建和销毁。corePoolSize:线程池的基本大小,即在没有任务需要执行的时候线程池的大小,并且只有在工作队列满了的情况下才会创建超出这个数量的线程。这里需要注意的...转载 2018-05-11 14:40:06 · 20120 阅读 · 0 评论 -
线程池corePoolSize和maximumPoolSize关系
为了了解corePoolSize和maximumPoolSize关系,先用测试代码进行测试:第一个例子://使用只能5个有限队列,corePoolSize=2, maxPoolSize=10 ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 10, 0L, TimeUnit.MI...原创 2018-12-17 21:44:28 · 15472 阅读 · 0 评论 -
关于线程池ThreadPoolExecutor的深度思考
今天,又一次梳理了下关于线程池ThreadPoolExecutor的运行原理,重新阅读源码,又一次加深理解。在梳理ThreadPoolExecutor运行原理前,问了自己几个问题:(1)task什么时候执行,如何执行?(2)当thread数<core size时,task执行完后,thread又如何保持运行中,而不被销毁?(3)当task个数>core size &am...原创 2019-04-18 20:59:09 · 281 阅读 · 0 评论