我目前有一个使用Threadpool并生成Runnable线程的Java程序。由于某些原因,尽管线程没有执行任何复杂的逻辑,但它们仍需要很长时间才能完成。
这是我的线程类...
public class MyThread implements Runnable {
public MyThread(){}
@Override
public void run(){
System.out.println("Hello");
}
}
这是我产生线程的地方...
public void testThreads(){
ExecutorService threadPool = Executors.newFixedThreadPool(5);
List<Future<?>> tasks = new LinkedList<>();
for(int i = 0; i < 10; i++){
tasks.add(threadPool.submit(new MyThread());
}
// Waiting for threads to complete
for (Future<?> currTask : tasks) {
try {
currTask.get();
} catch (Throwable thrown) {
context.getLogger().log("Error while waiting for thread completion");
}
}
}
由于某种原因,在For循环中,当我等待所有线程完成时,大约需要10秒钟以上的时间。为什么是这样?为什么线程需要这么长时间才能完成?