今日、スレッドパターンについて質問を投稿しましたが、ほとんどの人がExecutorServiceを調べることを提案しました。
ExecutorServiceを調べていたところ、何かが足りないと思います。サービスに実行中またはブロックされたスレッドがあり、誰かがExecutorService.shutdown()を呼び出した場合はどうなりますか。実行中またはブロックされているスレッドはどうなりますか?
ExecutorServiceは、それらのスレッドが完了するのを待ってから終了しますか?
私がこれを尋ねる理由は、私がJavaに手を出したとき、Thread.stop()が非推奨になったためです。スレッドを停止する正しい方法は、必要に応じてsempahoresを使用してThreadを拡張することでした。
public void run () {
while (!this.exit) {
try {
block();
//do something
} catch (InterruptedException ie) {
}
}
}
public void stop () {
this.exit = true;
if (this.thread != null) {
this.thread.interrupt();
this.thread = null;
}
}
ExecutorServiceは実行中のスレッドをどのように処理しますか?