并发编程剖析
Touch&
灵动
展开
-
深入ConcurrentHashMap1.7源码
深入ConcurrentHashMap1.7源码一、简介 基于JDK7分析ConcurrentHashMap的实现原理,这个版本ConcurrentHashMap的代码实现比较清晰,代码加注释总共也就1622行。 ConcurrentHashMap相当于多线程版本的HashMap,不会有线程安全问题,...原创 2020-03-19 17:37:00 · 283 阅读 · 0 评论 -
HashMap 在高并发下引起的死循环
HashMap 在高并发下引起的死循环HashMap 基本实现(JDK 8 之前)HashMap 通常会用一个指针数组(假设为 table[])来做分散所有的 key,当一个 key 被加入时,会通过 Hash 算法通过 key 算出这个数组的下标 i,然后就把这个 <key, value> 插到...原创 2020-03-06 11:50:43 · 399 阅读 · 0 评论 -
深入理解CyclicBarrier原理
深入理解CyclicBarrier原理和源码解析一、简介CyclicBarrier也叫同步屏障、或者循环栅栏,允许让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行。现实生活中我们经常会遇到这样的情景,在进行某个活动前需要等待人全部都...原创 2020-02-25 16:06:26 · 663 阅读 · 0 评论 -
深入理解CountDownLatch原理
深入理解CountDownLatch原理一、简介CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还...原创 2020-02-25 16:03:16 · 1669 阅读 · 0 评论 -
深入理解AQS(AbstractQueuedSynchronizer)
深入理解AQS(AbstractQueuedSynchronizer)AbstractQueuedSynchronizer(AQS)是JDK中实现并发编程的核心,平时我们工作中经常用到的ReentrantLock,CountDownLatch,Semaphore等都是基于它来实现的。AQS类中维护了一个双向链表(FIFO队列), 如下...原创 2020-02-25 15:58:00 · 1133 阅读 · 3 评论 -
深入理解ReentrantLock原理
深入理解ReentrantLock原理一、前言 我们在分析ReentrantLock源码之前最好先了解AQS,因为ReentrantLock是基于AQS实现的。AQS源码分析在之前的博客已经进行了深入分析。传送门:深入理解AQS(AbstractQueuedSynchronizer)二、Reent...原创 2020-02-25 16:01:02 · 552 阅读 · 0 评论 -
深入理解Semaphore原理
深入理解Semaphore原理和源码解析一、Semaphore的简述 Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可证,这可能会释放一个阻塞的acquire方法。然而,其实并没有实...原创 2020-02-25 16:07:38 · 1881 阅读 · 0 评论 -
Volatile的内存语义解析
Volatile的内存语义解析提到volatile首先想到就是:保证此变量对所有线程的可见性,这里的 “可见性” 是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。 禁止指令重排序优化。一、多线程之内存可见性1、什么是可见性?可见性:一个线程对共享变量值的修改,能...原创 2019-04-17 11:04:54 · 285 阅读 · 0 评论