use*_*201 1 java multithreading threadpool
我有一个命令行应用程序.它运行循环说100次,并在循环中使用线程调度任务.我正在使用ExecutorService,因此任何时候都有4个线程在运行.
循环结束后,我想打印摘要消息.例如,完成所有100个任务所花费的时间.当我逐步完成代码时,调试器直接进入摘要部分,但其他任务仍在运行.我理解这是因为每个线程都是自己运行的.那么如何在所有线程完成后才打印消息?
ExecutorService exec = Executors.newFixedThreadPool(4);
long startTime = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
Runnable requestHandler = new Runnable() {
@Override
public void run() {
try {
// call task function in here
} catch (Exception ex) {
}
}
};
exec.execute(requestHandler);
}
exec.shutdown();
long endTime = System.currentTimeMillis();
LOGGER.info("******************SUMMARY******************");
LOGGER.info("Time taken : " + ((endTime - startTime)/1000) + " seconds, "
+ ((endTime - startTime)/1000/60) + " minutes");
Run Code Online (Sandbox Code Playgroud)
从主线程中,您可以创建另一个线程来执行从声明exec到的所有操作exec.shutdown();.创建此线程后,将主线程放入wait.在新线程的操作结束时(之后exec.shutdown();)你应该notify这样做.
| 归档时间: |
|
| 查看次数: |
1071 次 |
| 最近记录: |