先来讲解一下Semaphore信号灯的作用: 可以维护当前访问自身的线程个数,并提供了同步机制, 使用semaphore可以控制同时访问资源的线程个数 例如,实现一个文件允许的并发访问数. 请看下面的演示代码: public class SemaphoreTest { public static void main(String[] args) { //创建一个带有缓存的线程池 ExecutorService service = Executors.newCachedThreadPool();…
1.CountDownLatch 允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助. A CountDownLatch用给定的计数初始化. await方法阻塞,直到由于countDown()方法的调用而导致当前计数达到零,之后所有等待线程被释放,并且任何后续的await 调用立即返回. 这是一个一次性的现象 - 计数无法重置. 如果您需要重置计数的版本,请考虑使用CyclicBarrier . public class CountDownLatchTest { public v…