"안녕하세요, 아미고! 스레드에 대해 배우는 데 큰 진전을 이루고 있는 것 같습니다."

"결국 그렇게 어렵지는 않았어요."

대단해! 오늘은 쉬운 수업이 있으며 주제는 조인 방법입니다.

다음과 같은 상황을 상상해 보십시오. 메인 스레드가 일부 작업을 수행하기 위해 하위 스레드를 생성했습니다. 시간이 흐르고 이제 메인 스레드는 자식 스레드가 수행한 작업의 결과가 필요합니다. 그러나 하위 스레드는 아직 작업을 완료하지 않았습니다. 메인 스레드는 무엇을 해야 합니까?

좋은 질문. 메인 스레드는 무엇을 해야 합니까?

"이것이 조인 방법의 목적입니다. 다른 스레드가 작업을 완료하는 동안 한 스레드를 기다리게 할 수 있습니다."

암호 설명
class Printer implements Runnable
{
private String name;
public Printer(String name)
{
this.name = name;
}
public void run()
{
System.out.println("I’m " + this.name);
}
}
Runnable 인터페이스를 구현하는 클래스입니다.
public static void main(String[] args)
{
Printer printer1 = new Printer("Nick");
Thread thread1 = new Thread(printer1);
thread1.start();

thread1.join();
}
메인 스레드는 자식 스레드인 thread1을 생성합니다 .

그런 다음 thread1 .start()를 호출하여 시작합니다 .

그런 다음 완료될 때까지 기다립니다 – thread1.join();

한 스레드는 두 번째 스레드의 Thread 개체에서 조인 메서드를 호출할 수 있습니다. 그 결과 첫 번째 스레드(메서드를 호출한 스레드)는 두 번째 스레드(객체의 조인 메서드를 호출한 스레드)가 완료될 때까지 작업을 중지합니다.

여기서 두 가지를 구분해야 합니다. 스레드(별도의 실행 환경)와 스레드 개체가 있습니다.

"그게 다야?"

"예."

"그런데 왜 우리는 스레드를 생성한 다음 완료될 때까지 즉시 기다려야 합니까?"

"당장 필요하지 않을 수도 있습니다. 일정 시간이 지난 후일 수도 있습니다. 첫 번째 자식 스레드를 시작한 후 메인 스레드는 다른 스레드에 더 많은 작업을 할당 할 수 있습니다(스레드를 생성하고 시작 메서드 를 호출하여 ). 그런 다음 남은 작업이 없으면 첫 번째 자식 스레드의 결과를 처리해야 합니다. 다른 스레드가 작업을 마칠 때까지 기다려야 할 때마다 조인 메서드를 호출해야 합니다 . "

"알았어요."