JUC
Java并发包学习
__immortal
这个作者很懒,什么都没留下…
展开
-
JUC源码阅读-AbstractQueuedSynchronizer
AQS(AbstractQueuedSynchronizer)是JUC框架中最重要的类,通过它来实现独占锁和共享锁。本次阅读AbstractQueuedSynchronizer从一下四部分进行解析 CLH队列即同步队列:储存着所有等待锁的线程 独占锁 共享锁 Condition条件 注:阅读的jdk版本为1.8 CLH队列(线程同步队列) 在获取锁之前,没有获取到锁的...原创 2019-08-22 22:26:57 · 181 阅读 · 0 评论 -
JUC源码阅读-ReentrantLock
ReentrantLock可重入锁,是一种递归无阻塞的同步机制。它可以等同与synchornized实现同步。并且提供了比synchornized更为灵活的加锁机制。 ReentrantLock提供了公平锁FairSync和非公平锁NonfairSync两种机制。 公平锁,锁的获取是有序的 非公平锁,获取锁不是有序的,但效率比公平锁高,在多线程下,吞吐量较高。 ReentrantL...原创 2019-08-25 14:55:21 · 210 阅读 · 0 评论 -
JUC源码阅读-ReentrantReadWriteLock
ReentrantReadWriteLock可重入读写锁,它实现了ReadWriteLock接口,从而实现了读服务可以由多个线程进入,写线程只有一个线程可以进入。 ReentrantReadWriteLock中维护了一对锁,分别位一个读锁和一个写锁。通过读写分离提高了并发性。 同一时间内,可以允许多个线程访问。 写线程访问时,所有的读线程和写线程都会被阻塞。 注:本文以jdk ...原创 2019-08-25 16:43:06 · 240 阅读 · 0 评论 -
JUC并发容器-ConcurrentHashMap
ConcurrentHashMap是在多线程情况下在线程安全的HashMap,它是一个高性能的线程安全的HashMap。在1.8版本以前,ConcurrentHashMap采用分段锁的概念,使锁更加细化,在jdk1.8以后,是利用CAS+Synchronized来保证并发更新的安全,底层采用数组+链表+红黑树的存储结构。本文基于1.8版本阅读ConcurrentHashMap源码。 内部类 C...原创 2019-08-25 21:24:17 · 220 阅读 · 0 评论 -
JUC并发工具-CountDownLatch
CountDownLatch是一个同步辅助类,通过AQS实现的一个闭锁。在其他线程完成它们的操作之前,允许一个多个线程等待。简单来说,CountDownLatch中有一个锁计数,在计数到达0之前,线程会一直等待。 public class CountDownLatch { /** * Synchronization control For CountDownLatch. ...原创 2019-08-26 22:10:25 · 173 阅读 · 0 评论