CountDownLatch 示例
public class CountDownLatchTest { public static void main(String[] args) throws InterruptedException { //倒数计数器 final CountDownLatch begin = new CountDownLatch(1); //倒数计数器 final CountDownLatch end = new CountDownLatch(10); //十名枪手 ExecutorService execu = Executors.newFixedThreadPool(10); //模拟招募10名枪手到齐后开动大巴,送往“战场” for(int i=0;i<10;i++){ final int NO = i+1; Runnable r = new Runnable() { @Override public void run() { try { //等待招募者下令招募 begin.await(); Thread.sleep((long) (Math.random()*10000)); System.out.println("枪手:"+NO+"到了"); } catch (InterruptedException e) { e.printStackTrace(); }finally{ //每到达一个枪手,计数器减1 end.countDown(); } } }; execu.submit(r); } //begin倒数计数器减1为0,则开始下招募令,一声令下 begin.countDown(); System.out.println("开始招募。。。。"); //等待所有的枪手到达 end.await(); //所有枪手到达 System.out.println("所有枪手到达,开动大巴,送往目的地。。。。"); execu.shutdown(); } }
如果我的文章对你有帮助,就点一下推荐吧.(*^__^*)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步