Java并发
一颗栗子栗
这个作者很懒,什么都没留下…
展开
-
并发容器之ConcurrentHashMap
目录源码分析(JDK1.8)JDK1.7ConcurrentHashMap与HashMapConcurrentHashMap与HashTable 源码分析(JDK1.8) 底层数据结构 数组+链表+红黑树(数组大小是2的幂次方) 实现原理 采用CAS和synchronized关键字 注:ConcurrentHashMap的hash算法、求桶索引与HashMap类似,不再赘述。 数据结构 v...原创 2019-08-12 19:02:35 · 115 阅读 · 0 评论 -
并发容器之CopyOnWriteArrayList
属性: 在JDK11中,将reentrantLock改为关键字synchronized //锁 final transient Object lock = new Object(); //数组,保存数据 private transient volatile Object[] array; 在CopyOnWriteArrayList中不需要想ArrayList一样记...原创 2019-08-12 19:41:45 · 120 阅读 · 0 评论 -
并发容器之队列
线程安全的队列分为阻塞队列和非阻塞队列。 非阻塞队列ConcurrentLinkedQueue 使用 CAS 非阻塞算法来实现线程安全,无界非阻塞队列 属性 transient volatile Node<E> head; private transient volatile Node<E> tail; 构造方法 public ConcurrentLin...原创 2019-08-12 21:15:14 · 94 阅读 · 0 评论 -
AQS之ReentrantLock,ReentrantReadWriteLock
ReentrantLock 独占锁,可重入 属性 private final Sync sync; 实现Lock接口,重写方法 public void lock() { sync.acquire(1); } public void lockInterruptibly() throws InterruptedException { sync...原创 2019-08-12 22:30:22 · 137 阅读 · 0 评论 -
AQS之其他同步组件
Semaphore 允许多个线程同时访问。Syn类实现共享模式。 构造函数 permits:允许访问最大线程数 fair:指定是否是公平锁,默认false。 public Semaphore(int permits) { sync = new NonfairSync(permits); } public Semaphore(int permits, bool...原创 2019-08-13 10:57:29 · 97 阅读 · 0 评论