我創建了一個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