0
点赞
收藏
分享

微信扫一扫

java-多线程-CountDownLatch(闭锁) CyclicBarrier(栅栏) Semaphore(信号量)-

花明 2022-04-02 阅读 51


这几个工具类其实说白了就是为了能够​更好控制线程之间的通讯问题​~

CountDownLatch 

是一个同步的辅助类,​允许一个或多个线程一直等待​,​直到​其它线程​完成​它们的操作。

常用的API其实就两个:​​await()​​​和​​countDown()​

例子:例子:rodert现在去做实习生了,其他的员工还没下班,rodert不好意思先走,等其他的员工都走光了,rodert再走。

package threadMy;

import java.util.concurrent.CountDownLatch;

public class CountDownLatchTest {

public static void main(String[] args) {

final CountDownLatch countDownLatch = new CountDownLatch(5);

System.out.println("现在6点下班了.....");

// rodert线程启动
new Thread(new Runnable() {
@Override
public void run() {

try {
// 这里调用的是await()不是wait()
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("...其他的5个员工走光了,rodert终于可以走了");
}
}).start();

// 其他员工线程启动
for (int i = 0; i < 5; i++) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("员工xxxx下班了");
countDownLatch.countDown();
}
}).start();
}
}
}

java-多线程-CountDownLatch(闭锁) CyclicBarrier(栅栏) Semaphore(信号量)-_i++

CyclicBarrier



举报

相关推荐

0 条评论