【发布时间】:2016-06-01 11:43:50
【问题描述】:
我创建了一个ThreadPool,其中包含 10 个固定线程。有时我需要中断线程池中一个长时间运行的线程,主要是因为它们在某些操作中阻塞并且发生超时并且我中断了线程。我抓住了InterruptedException 并将线程的状态也设置为中断。在这种情况下,我的问题是,ThreadPool 是否会创建一个新线程并用新的 One 替换中断的线程?
下面是由线程执行的示例代码。问题是,当这个线程被中断时,线程池会用一个新的线程替换这个线程吗?
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;
}
【问题讨论】:
-
你用的是什么线程池?
-
你知道
get()有一个可以接受超时的重载,对吧? -
请忽略秒表,是的,我知道 get with time-out 方法。
标签: java threadpool