并发工具类
CountDownLatch
CountDownLatch允许一个或多个线程等待其他线程完成操作。可以实现join的功能且比join更加强大。
CountDownLatch的构造函数接受一个int类型的等待线程数N,
其中countDown方法,可以使N减一,await方法会阻塞当前线程,直到N为零。
CountDownLatch使用场景(需等待多个线程完成后,再执行本线程)
public class CountDownLatchUseCase {
private final static int THREAD_COUNT = 2 ; // 总共的线程数
public static void main(String[] args) throws InterruptedException {
// 定义的将要等待的线程个数
final CountDownLatch latch = new CountDownLatch(THREAD_COUNT);
new Thread(new Runnable() {
public void run() {
System.out.println(Thread.currentThread() + " 完成了 " + System.currentTimeMillis());
latch.countDown(); // 已经完成了的 线程数 减一
}
},"A").start();
new Thread(new Runnable() {
public void run() {
System.out.println(Thread.currentThread() + " 完成了 " + System.currentTimeMillis());
latch.countDown(); // 已经完成了的 线程数 减一
}
},"B").start();
latch.await(); // 让当前线程等待 阻塞,直到所有 THREAD_COUNT 线程完成后
System.out.println(Thread.currentThread()+" 所有的线程都完成了");
}
}
本文深入探讨了Java并发工具类CountDownLatch的使用方法及原理,CountDownLatch允许一个或多个线程等待其他线程完成操作,通过具体示例代码展示了其在多线程环境中的应用场景。
655

被折叠的 条评论
为什么被折叠?



