【学习笔记】Java并发编程的艺术——第8章 Java中的并发工具类
第8章 Java中的并发工具类
8.1 等待多线程完成的CountDownlatch
允许一个活多个线程等待其他线程完成操作
调用countDown()减1,减至0时await放行
8.2 同步屏障Cyclic Barrier
8.2.1 CyclicBarrier简介
初始化有一个int参数,代表有n个线程阻塞在当前同步屏障上时,会全部放行
8.2.2 CyclicBarrier的应用
比如几个线程计算结果,最后汇总
8.2.3 CyclicBarrier和CountDownLatch区别
CyclicBarrier可以调用reset()重置阻塞线程计数器,而CountDownLatch只能使用一次,CyclicBarrier可获得当前阻塞线程数[getNumberWaiting()],CyclicBarrier适合更复杂的场景,且可以指定阻塞结束时立刻运行一个线程
8.3 控制并发线程数的Semaphore
用于控制同一时间的并发线程数量,使其限制在n及以下。
适用于限制线程获取连接池中的连接等场景
有获取当前许可数,正在阻塞线程数,是否有阻塞等方法
8.4 线程间交换数据的Exchanger
用于两个线程的信息交换,若一个来执行exchge(),则会一直等待,可设置超时时间。