카테고리 없음

메인 스레드 와 서브 스레드

jw-backend 2024. 7. 24. 01:04
반응형
public class SyncToAsync {
public static void main(String[] args) {
Runnable task = () -> {
// 동기적으로 수행할 작업
System.out.println("작업 시작");
try {
Thread.sleep(2000); // 2초 대기
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("작업 완료");
};


// 새로운 스레드에서 작업 실행
Thread thread = new Thread(task);
thread.start();

// 메인 스레드는 다른 작업을 계속 수행할 수 있음
System.out.println("메인 스레드에서 다른 작업 수행");
}
}

 

메인 스레드와 서브 스레드

  1. 메인 스레드:
    • main 메서드가 실행되는 스레드를 메인 스레드라고 합니다. Java 애플리케이션이 시작될 때 JVM(Java Virtual Machine)이 자동으로 생성하는 기본 스레드입니다.
    • 이 스레드는 main 메서드의 코드가 실행되는 동안 활동합니다. 즉, System.out.println("메인 스레드에서 다른 작업 수행");와 같은 메인 스레드의 작업은 이 스레드에서 수행됩니다.
  2. 서브 스레드:
    • Thread thread = new Thread(task);를 통해 생성된 thread 인스턴스는 새로운 서브 스레드를 나타냅니다. 이 스레드는 task의 run() 메서드(즉, 람다 표현식으로 정의된 부분)를 실행합니다.
    • thread.start();를 호출하면 새로운 서브 스레드가 시작되고, 이 스레드에서 "작업 시작"과 "작업 완료"를 출력하는 작업이 수행됩니다.

요약

  • 메인 스레드: main 메서드에서 실행되는 기본 스레드로, 프로그램의 초기 실행 컨텍스트입니다.
  • 서브 스레드: new Thread(task)를 통해 생성된 새로운 스레드로, 비동기적으로 task를 실행합니다.

따라서, 메인 스레드는 프로그램의 진입점인 main 메서드에서 실행되고, 서브 스레드는 Thread 인스턴스 내부에서 실행되는 것입니다