十三、柵欄CyclicBarrier
阿新 • • 發佈:2018-12-24
一、簡介
柵欄CyclicBarrier的作用就是等待一組執行緒都準備好了,然後執行某個任務。這與CountDownLatch很相似。
但是CyclicBarrier和CountDownLatch是有區別的:
1)CyclicBarrier可以複用,你可以呼叫Reset方法重新初始化;CountDownLatch是一次性的。
2)CyclicBarrier是一組執行緒相互等待,而CountDownLatch是一個或一組執行緒等待另外一個或者一組執行緒。
JDK文件:http://tool.oschina.net/uploads/apidocs/jdk-zh/java/util/concurrent/CyclicBarrier.html
二、示例
import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; public class CyclicBarrierDemo { private static CyclicBarrier barrier = new CyclicBarrier(3, new Runnable() { @Override public void run() { System.out.println("全都到齊了"); } }); public static void main(String[] args) throws InterruptedException { for (int i = 0; i < 3; i++) { new Thread(() -> { try { barrier.await();
System.out.println("end await"); }catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } }).start(); System.out.println("啟動 i=" + i); Thread.sleep(1000); } } }