ホームページ  >  記事  >  Java  >  複数のスレッドが完了した後にメインスレッドが確実に実行されるようにするにはどうすればよいですか?

複数のスレッドが完了した後にメインスレッドが確実に実行されるようにするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-28 02:50:02224ブラウズ

How to Ensure Main Thread Execution After Multiple Threads Complete?

複数のスレッドの完了を待機しています

説明したシナリオでは、複数のスレッドが作成され、それぞれが同じタスクを個別に実行します。 、生成されたすべてのスレッドが実行を終了するまでメインスレッドを一時停止する方法を見つける必要があります。これは、適切な調整を確保し、セカンダリ スレッドが完了する前にメイン スレッドが続行しないようにするために不可欠です。

効果的な解決策の 1 つは、生成されたすべてのスレッドを格納する Thread オブジェクトの配列を作成し、それらを同時に開始してから、配列内の各スレッドで join() メソッドを呼び出すループを実装します。 join() メソッドは、呼び出されたスレッドが終了するまで、呼び出しスレッドをブロックします。

このループを DoSomethingInAThread クラスに組み込むことにより、メイン スレッドの実行を続行する前に、すべてのセカンダリ スレッドが完了するのを確実に待つことができます。

<code class="java">// Array to store created threads
private static Thread[] threads;

public static void main(String[] args) {
    // Create an array to store the threads
    threads = new Thread[1000];

    // Start all the threads
    for (int n = 0; n < 1000; n++) {
        Thread t = new Thread(new DoSomethingInAThread());
        t.start();
        // Save the reference to the created thread
        threads[n] = t;
    }

    // Wait for all threads to complete
    for (int i = 0; i < threads.length; i++) {
        threads[i].join();
    }</code>

上記のように main() メソッドを変更すると、すべてのセカンダリ スレッドの実行が完了した場合にのみメイン スレッドが続行されます。この手法により、メインスレッドの実行がそのすべての子スレッドの完了と確実に同期されます。

以上が複数のスレッドが完了した後にメインスレッドが確実に実行されるようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。