ThreadPool
を10個の固定スレッドで作成します。スレッドプール内のlongrunningスレッドを中断する必要があるときがあります。ほとんどの場合、スレッドがいくつかの操作でブロックされているため、タイムアウトが発生し、スレッドが中断します。私は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;
}
によって
queue.take()
の内側に洗浄されますか? – dash1e'get()'にタイムアウトを受け入れるオーバーロードがあることは知っていますよね? – erickson
'StopWatch'とは何ですか? – erickson