ホームページ > Java > &#&チュートリアル > 続行する前にすべての Java スレッドが終了していることを確認するにはどうすればよいですか?

続行する前にすべての Java スレッドが終了していることを確認するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-02 04:45:11
オリジナル
817 人が閲覧しました

How to Ensure All Java Threads Finish Before Proceeding?

Java ですべてのスレッドが作業を完了するのを待つ方法

複数のスレッドを使用する場合、続行する前にスレッドの実行を調整し、タスクが完了していることを確認することが重要です。このシナリオでは、Web からデータを同時に取得し、バッファー クラスにデータを設定する 5 つのスレッドがあります。目標は、バッファ内のデータを検証し、すべてのスレッドが作業を完了した場合にのみデータベースに保存することです。

解決策 ExecutorService

これを Java で実現する効果的な方法の 1 つは、次のとおりです。スレッド プールを管理するための便利な API を提供する ExecutorService を利用します。このアプローチを実装する方法は次のとおりです。

ExecutorService es = Executors.newCachedThreadPool();

// Submit the tasks to the executor service
for (int i = 0; i < 5; i++) {
    es.execute(new Runnable() {
        // Implement your task here
    });
}

// Shut down the executor service after submitting the tasks
es.shutdown();

// Wait for all tasks to finish or for a specified timeout
boolean finished = es.awaitTermination(1, TimeUnit.MINUTES);

// If all tasks have finished, proceed with validation and database storage
if (finished) {
    validateBufferData();
    storeDataInDatabase();
}
ログイン後にコピー

awaitTermination メソッドを利用すると、executor サービス内のすべてのタスクが完了するか、指定されたタイムアウトに達するまで、メイン スレッドをブロックできます。これにより、すべてのスレッドが作業を完了した場合にのみデータ検証とデータベース保存が行われることが保証されます。

以上が続行する前にすべての Java スレッドが終了していることを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート