![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 96
BoscoKuo
言念君子,温其如玉。
展开
-
AQS实践(一):ReentrantLock概述
1 ReentrantLock类图结构 ReentrantLock是可重入的独占锁,同时只能有一个线程可以获取到该锁,其他获取该锁的线程会被阻塞而被放入该锁的AQS阻塞队列里面。 上图是ReentrantLock类图结构,通过类图可以对ReentrantLock内部有个大致的了解。 ReentrantLock是使用AQS来实现的,并且根据参数来决定内部是一个公平锁还是非公平锁。 // 默认是非公...原创 2019-11-29 17:11:43 · 243 阅读 · 0 评论 -
Java并发编程:AQS概述
1 AQS 锁的底层支持 AQS的全称是AbstractQueuedSynchronizer,抽象同步队列。ReentrantLock底层使用了AQS(内部静态类Sync实现了AQS),ThreadPoolExecutor底层也是用了AQS(内部类Worker实现了AQS)。 上类图可以看处,AQS是一个FIFO的双向队列,其内部通过结点head和tail记录队首和队尾元素。 1.1 内部静态类N...原创 2019-11-27 18:16:39 · 629 阅读 · 0 评论 -
Java并发编程:ScheduledThreadPoolExecutor源码解析
1 ScheduledThreadPoolExecutor类图 ScheduledThreadPoolExecutor继承了ThreadPoolExecutor并实现了ScheduledExecutorService接口。线程池队列是DelayedWorkQueue,是一个延迟队列。 ScheduledFutureTask是具有返回值的任务,继承自FutureTask。FutureTask的内部有...原创 2019-11-14 14:48:47 · 241 阅读 · 0 评论 -
Java并发编程:ThreadPoolExecutor源码解析
1 介绍 线程池主要解决两个问题:一是当执行大量异步任务时线程池能够提供较好的性能。二是线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数,动态增加线程数。 2 ThreadPoolExecutor类图 高清图请点击 Integer类型用32位二进制表示,其中高三位表示线程池状态,后面29位用来记录线程池线程个数。 // 默认是Running状态,线程个数为0 private f...原创 2019-09-29 08:30:11 · 227 阅读 · 0 评论