[解決済み】ExecutorServiceを使用して、すべてのスレッドが終了するのを待つにはどうすればよいですか?
2022-03-24 10:50:47
質問
一度に4つのタスクを大量に実行したいのですが、どうすればいいですか?
ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
taskExecutor.execute(new MyTask());
}
//...wait for completion somehow
すべて完了したら、どのように通知されるのでしょうか?今のところ、グローバルなタスク・カウンターを設定して、すべてのタスクの終了時にそれを減らし、このカウンターが0になるのを無限ループで監視する、あるいはFutureのリストを取得して、無限ループですべてのタスクのisDoneを監視する以外に思いつきません。無限ループを伴わない、より良い解決策は何でしょうか?
ありがとうございます。
解決方法は?
基本的に
ExecutorService
を呼び出すと
shutdown()
で、次に
awaitTermination()
:
ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
taskExecutor.execute(new MyTask());
}
taskExecutor.shutdown();
try {
taskExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
...
}
関連
-
[解決済み] java ですべてのスレッドが作業を終えるまで待つ
-
[解決済み] トークンのシンタックスエラー、これらのトークンを削除してください [closed].
-
[解決済み] パラメータ[変数]の不正な修飾子;finalのみが許可される[closed]。
-
[解決済み] JAVA_OPTIONS、JAVA_TOOL_OPTIONS、JAVA_OPTSの違いについて
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] これまでの活動をすべて終了する
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
-
[解決済み】スレッドをタイムアウトさせる方法
-
[解決済み】ExecutorServiceのスレッドとスレッドプールの命名について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] Androidのコールバックとは何ですか?重複
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] HTTP ステータス 500 - サーブレットクラス pkg.coreServlet のインスタンス化に失敗しました。
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] Spring ApplicationContext - リソースリーク: 'context' が閉じられない
-
[解決済み] x--やx++はここで何をするのですか?
-
[解決済み】JavaマルチスレッドでCountDownLatchはどのように使用されるのですか?