ホームページ  >  記事  >  Java  >  メインスレッドが複数のスレッドプロセスの完了を待機するようにするにはどうすればよいですか?

メインスレッドが複数のスレッドプロセスの完了を待機するようにするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-31 02:31:29727ブラウズ

How to Ensure the Main Thread Waits for Completion of Multiple Threaded Processes?

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

このコード スニペットでは、複数のスレッドが作成され、それぞれが独自のスレッド内でタスクを実行しています。実行の。メインスレッドがすべてのサブスレッドの実行が完了するまで待ってから続行するようにするには、次のアプローチを実装できます。

  1. スレッドを配列に格納する:作成されたすべてのスレッドを格納する配列。これにより、完了ステータスを組織的に追跡できます。
  2. すべてのスレッドの開始: スレッド配列をループし、start() メソッドを使用して各スレッドを開始します。
  3. ループ内のスレッドの結合: すべてのスレッドを開始した後、配列内の各スレッドを結合するループを追加します。 join() メソッドは、ターゲット スレッドが実行を完了するまで、呼び出し元のスレッド (この場合はメイン スレッド) をブロックします。
<code class="java">// ... (code as before)

public class DoSomethingInAThread implements Runnable {

    public static void main(String[] args) {
        Thread[] threads = new Thread[1000];  // Assume 1000 threads for example
        
        // Start all threads
        for (int n = 0; n < 1000; n++) {
            threads[n] = new Thread(new DoSomethingInAThread());
            threads[n].start();
        }
        
        // Wait for all threads to complete
        for (int i = 0; i < threads.length; i++) {
            threads[i].join();
        }
    }

    public void run() {
        // ... (code as before)
    }
}</code>

join() メソッドを使用すると、メイン スレッドはブロックされます。すべてのサブスレッドが実行を完了するまで、プログラムはすべてのタスクが完了するのを待ってから、ループに続くコードに進みます。このアプローチにより、制御が可能になり、リソースが解放され、プログラムが正しく終了することが保証されます。

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

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