Java并发JUC
瘦子没有夏天
大家好,我是Leon。一个专业与Java领域的程序员,偶尔理理财。欢迎大家来阅读我博客,如果你发现极个别文章和书籍内容雷同,请叫我勤奋的code搬运工٩(๑❛ᴗ❛๑)۶。我的邮箱:gyoomi0709@foxmail.com
展开
-
并发容器之ConcurrentHashMap源码实现
并发容器之ConcurrentHashMap源码实现 一、背景 其实这一小节主要内容可以换一种说法:“为什么要使用ConcurrentHashMap,而非HashMap?尤其是在多线程环境下?” 其实我简单总结了以下三点原因,可以回答上述问题。此外声明下本文研究的源码版本以JDK1.7标准,其他版本的代码略有差异,尤其是JDK1.8 ,后面有时间在详细研究。 HashMap的线程不安全 在多线...原创 2019-05-31 15:14:24 · 292 阅读 · 0 评论 -
并发容器之CopyOnWriteArrayList源码实现
并发容器之CopyOnWriteArrayList源码实现 一、背景介绍 使用示例 public class TestCopyOnWriteArrayList { public static void main(String[] args) throws Exception { List<Integer> list = new CopyOnWriteArr...原创 2019-06-08 23:49:04 · 408 阅读 · 0 评论 -
ReentrantLock源码实现
ReentrantLock源码实现 一、示例使用 示例 public class ReentrantLockDemo { public static void main(String[] args) throws Exception { Service service = new Service(); Thread t01 = new Thread((...原创 2019-02-11 16:33:07 · 524 阅读 · 0 评论 -
基于AQS的BlockingQueue及其他阻塞队列源码实现
基于AQS的BlockingQueue及其他阻塞队列 一、什么是阻塞队列 定义 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞 的插入和移除方法。 支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满 支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空 适用场景 阻塞队列常用于生产者和消费者的场...原创 2019-02-13 16:27:03 · 1181 阅读 · 0 评论 -
ThreadPoolExecutor源码实现即Java中的线程池的实现
ThreadPoolExecutor源码实现即Java中的线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序 都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行 提高线程的可管理性。线程是稀缺资源,如果无限制...原创 2019-08-25 23:08:02 · 588 阅读 · 0 评论 -
AbstractQueuedSynchronizer(AQS)源码实现
AbstractQueuedSynchronizer(AQS)源码实现 大多数开发者不会直接用到AQS,但是它涵盖的范围极为广泛。AbstractQueuedSynchronizer是并发类诸如ReentrantLock、CountDownLatch、Semphore的核心。 CAS算法是AbstractQueuedSynchronizer的核心。如果不了解CAS算法的 CAS算法理解 Abstr...原创 2019-02-08 11:34:33 · 547 阅读 · 0 评论 -
基于AQS的ArrayBlockingQueue源码实现
基于AQS的ArrayBlockingQueue源码实现 一、引言 1.1 普通队列 譬如我们经常见到的ArrayList、LinkedList的队列,这些可以称之为简单队列或者普通队列。对它们的使用和理解我们就不做过多介绍。 说明 本人研究的JDK版本为JDK8。不同版本的实现可能略有差异,请读者们周知。 1.2 阻塞队列 JDK5后,Java在J.U.C包下给我们提供了一系列的阻塞队列的...原创 2019-08-26 21:25:49 · 501 阅读 · 0 评论