package com.github.atemerev.hollywood.office; import java.util.Collection; import java.util.concurrent.CountDownLatch; // 邮局 public class PostOffice { private static PostOffice instance; //邮局的信件的数量 private int count = 0; //倒计时计数器 private CountDownLatch latch; public static PostOffice instance() { if (instance == null) { instance = new PostOffice(); } return instance; } private PostOffice() { } //当发送信件的时候,计数器会减少.当计数器=0时,会通知除于latch等待状态的线程往下执行 public void send(Collection<Letter> letters) { for (Letter letter : letters) { System.out.println("Sending letter: " + letter); count++; if (latch != null) { latch.countDown(); } } } public int getSendLettersCount() { return count; } public CountDownLatch getLatch() { return latch; } public void setLatch(CountDownLatch latch) { this.latch = latch; } }