Java并发
文章平均质量分 86
Brain_L
这个作者很懒,什么都没留下…
展开
-
wait、notify、notifyAll
本文总结下wait、notify、notifyAll,其实是为了试试markdown。。。 wait 释放所持有的锁,线程阻塞。 能释放,那必须先持有,和synchronized配合使用。 线程调用wait方法,会进入锁对象的等待池,等待被唤醒。 由于线程进入等待,需要捕获InterruptedException,防止被打断,无法继续进行。 notify 线程释放,唤醒锁对...原创 2020-03-21 10:37:46 · 79 阅读 · 0 评论 -
【Java并发】CyclicBarrier
CyclicBarrier从字面意思上来看,循环栅栏,这篇文章就来分析下是到底是如何实现循环和栅栏的。 属性 private final ReentrantLock lock = new ReentrantLock(); /** Condition to wait on until tripped */ private final Condition trip = lock.newCo...原创 2019-12-03 10:10:25 · 98 阅读 · 0 评论 -
【Java并发】CountDownLatch
ReentrantLock为独占锁,也即排他锁,同一时刻只能有一个线程持有锁。现在来看几种共享锁。 CountDownLatch public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count < 0"); this.sync...原创 2019-12-02 16:01:57 · 83 阅读 · 0 评论 -
【Java并发】ReentrantLock
前篇写了JUC的基础AQS,其中介绍了它提供的很多模板方法,但是在实际编程中我们不会直接使用它,而是会使用它的各种实现。本文将介绍在实际使用中出现频率很高的一种并发锁——ReentrantLock。 从名字上来看,ReentrantLock具有两个特性,一个是可重入,一个是锁。 public class ReentrantLock implements Lock, java.io.Seria...原创 2019-12-01 21:10:02 · 88 阅读 · 0 评论 -
【Java并发】AQS
AQS依赖于提供一个原子变量(state)用来表示当前锁对象的同步状态,并且提供了三个对state变量原子操作的方法 getState() setState() compareAndSetState() /** * Returns the current value of synchronization state. * This operation has memory semant...原创 2019-11-26 17:11:05 · 165 阅读 · 0 评论 -
CopyOnWriteArrayList
ArrayList和LinkedList都不是线程安全的,如果需要线程安全的List,可以使用Collections.synchronizedList来生成一个同步list,但是这个同步list的方法都是通过synchronized修饰来保证同步的,并发性能不高。那么如果提高并发性能呢?比如某些场景下,对List的读操作远多于写操作,那么CopyOnWriteArrayList就派上用场了。 ...原创 2019-10-15 22:39:17 · 108 阅读 · 0 评论 -
ThreadLocal
1、ThreadLocal是什么? 顾名思义,线程级的本地变量,也就是线程之间是隔离的,不共享。适合不同线程存储各自的上下文。webapp中应用较多。 2、ThreadLocal中的属性和方法 private final int threadLocalHashCode = nextHashCode(); private static AtomicInteger nextHashCo...原创 2019-08-04 09:58:44 · 111 阅读 · 0 评论