一、CyclicBarrier使用
new Thread().start();
new Thread(new Runnable() {},"XXX").start();
public class CyclicBarrierTest { public static int NUM=; public static void main(String[] args) {
CyclicBarrier cyc = new CyclicBarrier();
for(int i=;i<NUM;i++) {
new Thread(new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getName() +":before CyclicBarrier");
cyc.await();
System.out.println(Thread.currentThread().getName() +":over CyclicBarrier");
}
},Thread.currentThread().getname()).start();
}
System.out.println("Test");
}
}
输出结果如下:
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
Test
main:before CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
二、CountDownLatch使用
public class CountDownTest {
public static int NUM=; public static void main(String[] args) {
CountDownLatch latch = new CountDownLatch(NUM);
for(int i =;i<NUM;i++) {
new Thread(new Runnable() {
public void run() {
System.out.println(Thread.currentThread.getName() + "Before CountDownLatch");
latch.countDown();
System.out.println(Thread.currentThread.getName() + "Over CountDownLatch"); }
},Thread.currentThread.geName()).start();
}
latch.await();
System.out.println("Test");
}
}
输出结果如下:
main:Before CountDownLatch
main:Before CountDownLatch
main:Over CountDownLatch
main:Before CountDownLatch
...
Test