新类库中的构件
@(并发)[java, 并发, Thinking in Java]
1. CountDownLatch
用法:它被用来同步一个或多个任务,强制它们等待由其他任务执行的一组操作完成。
步骤:
1. CountDownLatch latch = new CountDownLatch(SIZE);
2. 多个任务结束其工作时调用latch.countDown();
3. 调用latch.await();
等待SIZE数量的任务完成。
2. CyclicBarrier
用法:你希望创建一组任务,它们并行地执行工作,然后在进行下一个步骤之前等待,直至所有的任务都完成。它使得所有的并行任务都将在栅栏处列队,直至所有任务都完成。
步骤:
1. CyclicBarrier barrier = new CyclicBarrier(int n, obj implement Runnable);
2. 在n个线程上执行CyclicBarrier.await();
3. n个线程同时开始工作,栅栏动作即为obj
以上两者区别:#1被设计为只能触发1次,计数值不能被重置,#2可以重置计数值