我正在从我的代码中启动多个线程(大约 1000 个)。它们是从 while 循环中调用的 Runnable 线程。如何计算所有线程完成执行所花费的总时间?
此外,我正在打开一个数据库连接并有一组查询,我正在为其启动这些线程(1 个线程用于 1 个查询)。我什么时候关闭连接?
最佳答案
我会使用 ExecutorService
long start = System.nanoTime();
ExecutorService service = Executors.newWhatEverPool();
for(loop)
service.submit(new MyRunnable());
service.shutdown();
service.awaitTermination(1, TimeUnit.HOUR); // or longer.
long time = System.nanoTime() - start;
System.out.printf("Tasks took %.3f ms to run%n", time/1e6);
完成后关闭连接。资源的创建者也关闭它是一种常见的模式。例如如果主线程创建连接,它可能会在所有线程完成后关闭。
关于java - 如何计算多个线程完成执行的总时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11859534/