主執行緒等待多個子執行緒執行完了在執行
阿新 • • 發佈:2019-01-09
CountDownLatch類位於java.util.concurrent包下,利用它可以實現類似計數器的功能。
程式碼如下:
package Thread; import java.util.concurrent.CountDownLatch; /** * * @author Cshuzhuo * @date 2018-03-13 */ public class MyThreadTest implements Runnable{ private CountDownLatch countDownLatch; public MyThreadTest(CountDownLatch countDownLatch) { this.countDownLatch=countDownLatch; } public void run() { System.out.println(Thread.currentThread().getName()+"--子執行緒執行--"); countDownLatch.countDown(); } }
package Thread; import java.util.concurrent.CountDownLatch; /** * * @author Cshuzhuo * @date 2018-03-13 */ public class CountDownLatchTest { public static void main(String[] args) throws Exception { CountDownLatch count = new CountDownLatch(5); new Thread(new MyThreadTest(count)).start(); new Thread(new MyThreadTest(count)).start(); new Thread(new MyThreadTest(count)).start(); new Thread(new MyThreadTest(count)).start(); new Thread(new MyThreadTest(count)).start(); count.await(); System.out.println("主執行緒執行"); } }
說明:呼叫await()方法的執行緒會被一直阻塞,它會等待直到count值為0才繼續執行31
countDown() 會讓count-1