>  기사  >  Java  >  계속하기 전에 여러 스레드가 실행을 마칠 때까지 기다리는 방법은 무엇입니까?

계속하기 전에 여러 스레드가 실행을 마칠 때까지 기다리는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-27 10:17:03276검색

How to Wait for Multiple Threads to Finish Execution Before Proceeding?

멀티 스레드 실행을 동기화하는 방법

멀티 스레드 애플리케이션에서는 병렬 작업 실행을 조정해야 하는 경우가 많습니다. 이 문서에서는 계속하기 전에 스레드 그룹이 완료될 때까지 기다리는 방법을 살펴봅니다.

문제:

다음 코드를 고려하세요.

<code class="java">public class DoSomethingInAThread implements Runnable {...}

public static void main(String[] args) {
    for (int n=0; n<1000; n++) {
        Thread t = new Thread(new DoSomethingInAThread());
        t.start();
    }
    // wait for all threads' run() methods to complete before continuing
}</code>

이 예에서는 여러 개의 새 스레드가 생성되고 시작됩니다. 그러나 main() 메소드는 스레드가 작업을 완료할 때까지 기다리지 않고 즉시 실행을 계속합니다.

해결책:

실행을 동기화하기 위해 다음을 생성할 수 있습니다. 스레드 참조 배열을 만든 다음 각 스레드 개체에서 Join() 메서드를 사용합니다. 이는 대상 스레드가 실행을 완료할 때까지 현재 스레드를 차단합니다.

<code class="java">import java.lang.Thread;

public class DoSomethingInAThread implements Runnable {...}

public static void main(String[] args) {
    Thread[] threads = new Thread[1000];
    for (int n=0; n<threads.length; n++) {
        threads[n] = new Thread(new DoSomethingInAThread());
        threads[n].start();
    }
    for (Thread t: threads) {
        t.join();
    }
}</code>

이 수정된 코드에서 main() 메서드는 스레드 참조 배열을 생성하고 각 스레드를 시작합니다. 그런 다음 배열의 모든 스레드에서 Join()을 호출하는 루프에 들어갑니다. 이렇게 하면 main() 메서드가 계속되기 전에 모든 스레드가 작업을 완료할 수 있습니다.

위 내용은 계속하기 전에 여러 스레드가 실행을 마칠 때까지 기다리는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.