pet*_*ter 3 java concurrency multithreading cyclicbarrier
我正在读" Java Concurrency in Practice "一书,它说,
CyclicBarrier允许固定数量的方在障碍点重复会合,并且在将问题分解为固定数量的独立子问题的并行迭代算法中是有用的.
有人能举例说明它如何将问题分解为多个独立的子问题吗?
您必须自己将问题分解为多个独立的子问题.
障碍确保每一方在第二个子问题开始之前完成第一个子问题.这确保了在第二个子问题启动之前来自第一个子问题的所有数据都可用.
当每个步骤实际上相同时,一次又一次地需要相同的屏障时,使用CyclicBarrier.例如,在执行任何类型的多线程实际模拟时可能会发生这种情况,这种模拟是分步进行的.CyclicBarrier将确保每个线程在所有线程开始下一步之前完成给定步骤.
小智 5
由于目前尚未之间的另一个重要的区别CountDownLatch和CyclicBarrier,那就是:在同步线程CountDownLatch不能表明什么地方出了毛病的其他线程,从而使其他线程可以有一个选择,要么继续你放弃了整个协同操作.
如果一个CycliBarrier线程正在等待await()某个其他线程被中断或超时,那么BrokenBarrierException将在当前线程上发生指示在其中一个协作线程中出错的情况.
BrokenBarrierException也可以在Javadoc await()方法中找到的其他情况下发生.
开箱即用,CountDownLatch不提供此功能.