博主昨天去一家公司面试,被面试官问到一个问题,如果开启10个线程,但是需要这10个线程都执行完成后,再交由主线程统一输入,如何实现?当时我没有回答,我对多线程并不是那么的熟悉,面试结束后,我通过查阅资料找到了解决方案,下面我贴出代码:
int count = 10;
List<Thread> workers = new ArrayList<>();
for(int i = 0; i < count; i++) {
Thread worker = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("执行子线程");
}
});
worker.start();
workers.add(worker);
}
for(int i = 0; i < count; i++) {
workers.get(i).join();
}
System.out.println("执行主线程");
所有线程start之后,通过join方法等待线程执行完成,当所有线程执行完成后再执行后面的主线程方法。