代码GitHub地址 github.com/imyiren/con…
ps: 文章内容比较多
类 | 作用 | 说明 |
---|---|---|
Semaphore | 信号量:可以通过控制“许可”的数量,来保证线程间配合 | 线程只有拿到了许可才可以继续运行 |
CyclicBarrier | 循环栅栏:线程会等待,直到足够多线程达到了规定数量,再执行下一步任务 | 适用于线程间相互等待处理结果就绪的场景 |
Phaser | 和CyclicBarrier类似,但是计数可变 | java7加入的新类 |
CountDownLatch | 也是一个计数等待相关,数量地见到0时,触发动作 | 不可重复使用 |
Exchanger | 让两个线程在合适时交换对象 | 适用于两个线程工作在同一个类的不同实例上时,用于交换数据 |
Condition | 可以控制线程的等待和唤醒 | 是Object.wati()的升级版 |
CountDownLatch
计数门闩CountDownLatch(int count)
:只有一个构造方法,参数count为需要倒数的值await()
:调用此方法的线程会被挂起,它会等到count值为零的时候才继续执行countdown()
:讲count减1,直到0,等待的线程会被唤醒/** * @author yiren */ public class CountDownLatchExample01 { public static void main(String[] args) throws InterruptedException { AtomicInteger integer = new AtomicInteger(1); CountDownLatch latch = new CountDownLatch(5); ExecutorService executorService = Executors.newFixedThreadPool(5); for (int i = 0; i < 5; i++) { executorService.execute(() -> { try { System.out.println(Thread.current这篇关于Java并发编程—并发流程控制与AQS原理及相关源码解析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!