Bootstrap

java中线程设置超时_Java:为ThreadPool中的线程设置超时

我想为线程池中执行的线程设置超时.目前我有以下代码:

ExecutorService executor = Executors.newFixedThreadPool(8);

for(List l: partition) {

Runnable worker = new WorkerThread(l);

executor.execute(worker);

}

executor.shutdown();

while (!executor.isTerminated()) {

}

代码只是将大量对象拆分为子列表,并在单个线程中处理这些子列表.但这不是重点.

我想给线程池中的每个单线程一个超时.对于池中只有一个线程,我找到了以下解决方案:

Future> future = null;

for (List l : partition) {

Runnable worker = new WorkerThread(l);

future = executor.submit(worker);

}

try {

System.out.println("Started..");

System.out.println(future.get(3, TimeUnit.SECONDS));

System.out.println("Finished!");

} catch (TimeoutException e) {

System.out.println("Terminated!");

}

但这不适用于多个线程.也许我必须将每个线程放

;