CountDownLatch 和 CyclicBarrier 是 Java 并发包提供的两个非常易用的线程同步工具 类。
这两个工具类用法的区别在:
CountDownLatch 主要用来解决一个线程等待多个线程的场景,可以类比旅游团团长要等待所有的游客到齐才能去下一 个景点;
CyclicBarrier 是一组线程之间互相等待,更像是几个驴友之间不离不弃。
除此 之外 CountDownLatch 的计数器是不能循环利用的,也就是说一旦计数器减到 0,再有线 程调用 await(),该线程会直接通过。但CyclicBarrier 的计数器是可以循环利用的,而且具备自动重置的功能,一旦计数器减到 0 会自动重置到你设置的初始值。除此之外, CyclicBarrier 还可以设置回调函数,可以说是功能丰富。
网友评论