支付招聘网站套餐费用怎么做帐,大兴网站建设多少钱,渠道网络推广,wordpress 导航链接Java并发库提供了CountDownLatch类来实现这个功能。 CountDownLatch类是一个同步工具类#xff0c;在完成某些运算时#xff0c;只有其他所有的运算全部完成#xff0c;当前运算才继续执行。
下面是一个案例来说明CountDownLatch#xff1a;
说明#xff1a;当前有 5 个…Java并发库提供了CountDownLatch类来实现这个功能。 CountDownLatch类是一个同步工具类在完成某些运算时只有其他所有的运算全部完成当前运算才继续执行。
下面是一个案例来说明CountDownLatch
说明当前有 5 个线程做运算处理主线程要计算这 5 个子线程执行所消耗的时长。那么CountDownLatch在主线程中一直等待这这 5 个线程执行完后才执行主线程。每个子线程执行完后执行latch.countDown();也就是线程-1 的操作直到线程数为 0 的时候主线程才会执行主线程执行latch.await();等待着。
public class CountDownLatchDemo {public static final Integer THREAD_NUM 5;public static void main(String[] args) {CountDownLatch countDownLatch new CountDownLatch(THREAD_NUM);LatchDemo latchDemo new LatchDemo(countDownLatch);long startTime System.currentTimeMillis();for (int i 0; i THREAD_NUM; i) {new Thread(latchDemo).start();}try {countDownLatch.await();} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(消耗时间 (System.currentTimeMillis() - startTime) ms);}
}
class LatchDemo implements Runnable {private CountDownLatch latch;public LatchDemo(CountDownLatch latch) {this.latch latch;}Overridepublic void run() {synchronized (this){try {for (int i 0; i 50000; i) {if (i % 2 0){System.out.println(i 是偶数);}}} finally {latch.countDown();}}}
}