労働者に今日JDK1.6ソースrunTask法ThreadPoolExecutorを見て
tthrowの元での漁獲量(のRuntimeException EX)、exは、上の例外をキャッチしないようにしようと、上部thrown'll、例外は、上位層にスローされます
finnallyで直接試した後、finnally runLock.unlock()で、ロックを解除します。
概要:試して.... finnallyの使用主にリソースを解放するために、キャッチ例外なく、例外処理は、上位の発信者を呼び、
プライベート ボイドrunTask(Runnableをタスク){ 最終 ReentrantLockのrunLock = この.runLock。 runLock.lock(); してみてください{ / * *スレッドを確実に停止しているプールが中断された場合。 *ない場合は、スレッドが中断されていないことを確認。これが必要です *ケースでの状態の二重チェックが割り込みました そうならば、 - * shutdownNowのと同時にクリア *割り込みが再び有効になります。 * / もし((runState> = STOP || (Thread.interrupted() && runState> = STOP))&& hasRun) thread.interrupt(); / * *トラックの実行状態を確実にするafterExecute *タスクが完了したかを投げた場合にのみ呼び出されます *例外。それ以外の場合は、キャッチ実行時例外 *で、afterExecute自体によってスローされています *その場合、我々は再びそれを呼び出す必要はありません。 * / ブール RAN = 偽; beforeExecute(スレッド、タスク)。 してみてください{ task.run(); RAN = 真; afterExecute(タスク、ヌル); ++ completedTasks; } キャッチ(のRuntimeException EX){ 場合(!RAN) afterExecute(タスク、EX); スローEXを。 } } 最後に{ runLock.unlock(); } }