は、次のJavaコードジャワnewSingleThreadExecutorガベージコレクション
void doSomething(Runnable r1, Runnable r2){
Executor executor = Executors.newSingleThreadExecutor();
executor.execute(r1);
executor.execute(r2);
}
を考慮し、エグゼキュータが作成され、タスクR1とR2順次次々に実行されます。
私の質問です.2つのタスクr1とr2が終了するとどうなりますか?
私はエグゼキュータオブジェクトがガベージコレクションされると思いますが、シャットダウンするかどうかわかりません。エグゼキュータが実行のために新しいスレッドを作成する場合、このスレッドはリソースリークを引き起こしますか?
ExecutorServiceを使用し、実行のためにタスクを送信した後にシャットダウンを呼び出すことができます。 ESはタスクが完了するまで待ってから終了します。 – Jacob
コアスレッドがゼロの 'ThreadPoolExecutor'を使って、実行するタスクがないときにスレッドを再利用することもできます。 – Magnus