【CountDownLatch】實現多個執行緒同時啟動
阿新 • • 發佈:2019-02-11
要點:
1、 CountDownLatch的計數是1.
2、await發生在多個子執行緒,主執行緒負責countDown,相當於管理多個執行緒的同步時機。
package multithread; import java.util.HashMap; import java.util.Iterator; import java.util.concurrent.CountDownLatch; public class CountDownLatchSyncStart { @SuppressWarnings("unchecked") public static void main(String[] args) throws InterruptedException { CountDownLatchSyncStart test = new CountDownLatchSyncStart(); CountDownLatch latch = new CountDownLatch(1); Thread t1 = new Thread(test.new MapOper(latch)); Thread t2 = new Thread(test.new MapOper(latch)); t1.setName("Thread1"); t2.setName("Thread2"); t1.start(); t2.start(); System.out.println("thread already start, sleep for a while..."); Thread.sleep(1000); latch.countDown(); } public class MapOper implements Runnable { CountDownLatch latch ; public MapOper(CountDownLatch latch) { this.latch = latch; } public void run() { try { latch.await(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+" Sync Started!"); } } }