CountDownLatch
时间:2020-01-09 10:36:26 来源:igfitidea点击:
" java.util.concurrent.CountDownLatch"是一种并发结构,它允许一个或者多个线程等待一组给定的操作完成。
用给定的计数初始化" CountDownLatch"。通过调用CountDown()
方法,此计数递减。等待该计数达到零的线程可以调用await()方法之一。调用await()会阻塞线程,直到计数达到零为止。
以下是一个简单的示例。当Decrementer在CountDownLatch上调用countDown()3次后,等待的Waiter从await()调用中释放。
CountDownLatch latch = new CountDownLatch(3); Waiter waiter = new Waiter(latch); Decrementer decrementer = new Decrementer(latch); new Thread(waiter) .start(); new Thread(decrementer).start(); Thread.sleep(4000);
public class Waiter implements Runnable{ CountDownLatch latch = null; public Waiter(CountDownLatch latch) { this.latch = latch; } public void run() { try { latch.await(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Waiter Released"); } }
public class Decrementer implements Runnable { CountDownLatch latch = null; public Decrementer(CountDownLatch latch) { this.latch = latch; } public void run() { try { Thread.sleep(1000); this.latch.countDown(); Thread.sleep(1000); this.latch.countDown(); Thread.sleep(1000); this.latch.countDown(); } catch (InterruptedException e) { e.printStackTrace(); } } }