当我们需要同时启动N个线程时, 可以使用 java.util.concurrent.CountDownLatch 类解决。
demo:
import java.util.concurrent.CountDownLatch;
public class TestCountDownLatch {
public static void main(String[] args) {
CountDownLatch countDownLatch = new CountDownLatch(3);
for (int i=0; i<3; i++) {
Thread thread = new Thread(new Work2(countDownLatch));
thread.setName("线程-" + (i+1));
thread.start();
countDownLatch.countDown();
}
}
}
class Work2 implements Runnable {
private final CountDownLatch countDownLatch;
public Work2(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
}
@Override
public void run() {
try {
/**
*
*/
countDownLatch.await();
System.out.println(Thread.currentThread().getName() + "启动时间是" + System.currentTimeMillis());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
结果:
线程-1启动时间是1552287928096
线程-2启动时间是1552287928096
线程-3启动时间是1552287928096