倒计时门栓用例"/>
CountDownLatch 倒计时门栓用例
import java.util.concurrent.CountDownLatch;class Driver { void main() throws InterruptedException {CountDownLatch startSignal = new CountDownLatch(1);CountDownLatch doneSignal = new CountDownLatch(5); //等待5个线程 doneSignal.countDown();for (int i = 0; i < 5; ++i) new Thread(new Worker(startSignal, doneSignal)).start();System.out.println("主线程控制Worker开始工作"); startSignal.countDown(); System.out.println("主线程工作"); System.out.println("主线程await等待worker完成任务");doneSignal.await(); }}class Worker implements Runnable {private final CountDownLatch startSignal;private final CountDownLatch doneSignal;Worker(CountDownLatch startSignal, CountDownLatch doneSignal) {this.startSignal = startSignal;this.doneSignal = doneSignal;}public void run() {try {System.out.println("Worker等待主线程发令"); startSignal.await();doWork();System.out.println("Worker完成任务通知"); doneSignal.countDown();} catch (InterruptedException ex) {} // return;}void doWork() { System.out.println("Worker开始工作"); }}
转载于:.html
更多推荐
CountDownLatch 倒计时门栓用例
发布评论