线程协作工具之Semaphore、CountDownLatch、CyclicBarrier
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 各种线程协作工具 常见线程协作工具: 读写锁ReadWriteLock 信号量Semaphore 倒计时门栓CountDownLatch 循环栅栏CyclicBarrier 线程本地变量ThreadLocal 主要讲信号量Semaphore,倒计时门栓CountDownLatch, 循环栅栏CyclicBarrier 然后根据两个LeetCode题目来应用一下。 第一题: 三个不同的线程将会共用一个 Foo 实例。 线程 A 将会调用 one() 方法 线程 B 将会调用 two() 方法 线程 C 将会调用 three() 方法 请设计修改程序,以确保 two() 方法在 one() 方法之后被执行,three() 方法在 two() 方法之后被执行。 原生解法 应用场景及用法 基于notify/wait,所有的线程间通信类似通知的机制本质上都是notifyAll,多能用这个来实现。 class Foo { private static AtomicInteger flag = new AtomicInteger(0); private static Object Lock1 = new Object(); public Foo() { } public void first(Runnable