我创建了一个ThreadPool
,其中包含10个固定线程。有时我需要中断线程池中的一个长时间运行的线程,主要是因为它们在某些操作中被阻塞,并且发生超时并且中断该线程。我找到InterruptedException
并设置线程的状态为中断。在这种情况下,我的问题是ThreadPool
是否创建了一个新的线程,并用新的线程替换了中断的线程? 下面是由线程执行的示例代码。问题是,当这个线程被中断时,线程池是否会将这个线程替换为一个新线程?java thead池执行程序如何处理中断线程
public ResponseMessage call(){
Future<ResponseMessage> future = CacheManager.getInstance().asyncFetch();
ResponseMessage response = null;
try {
response = future.get();
}
catch (InterruptedException e) {
Thread.currentThread().interrupt();
} catch (ExecutionException ex) {
//create a blank response
}
return response;
}
您使用的是什么样的线程池的清洗? – dash1e 2012-04-06 01:05:34
你知道'get()'有一个接受超时的超载,对吗? – erickson 2012-04-06 01:11:41
'StopWatch'做什么? – erickson 2012-04-06 01:14:11