使用wait和AtomicInteger进行线程运行结束统计
作者:bin如何在所有子线程执行完后,才继续执行主线程?
思路是:统计执行完的子线程,再继续执行父线程
public class thread {
public static final String monitor = "100";
public static void main(String[] args) throws Exception{
AtomicInteger count = new AtomicInteger(10);
IntStream.range(0,10).boxed().forEach(integer -> {
new Thread(()->{
System.out.println("子线程开始睡觉,线程数" + integer);
try {
TimeUnit.SECONDS.sleep(5);
System.out.println("子线程醒了" + integer);
count.decrementAndGet();
if (count.get() == 0){
synchronized (monitor){
monitor.notify();
}
}
}catch (Exception e){
System.out.println("子线程被打断" + integer);
}
}).start();
});
System.out.println("主线程开始等待");
synchronized (monitor){
monitor.wait();
}
System.out.println("主线程被唤醒");
}
}