반응형
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("메인 스레드에서 다른 작업 수행");
}
}
메인 스레드와 서브 스레드
- 메인 스레드:
- main 메서드가 실행되는 스레드를 메인 스레드라고 합니다. Java 애플리케이션이 시작될 때 JVM(Java Virtual Machine)이 자동으로 생성하는 기본 스레드입니다.
- 이 스레드는 main 메서드의 코드가 실행되는 동안 활동합니다. 즉, System.out.println("메인 스레드에서 다른 작업 수행");와 같은 메인 스레드의 작업은 이 스레드에서 수행됩니다.
- 서브 스레드:
- Thread thread = new Thread(task);를 통해 생성된 thread 인스턴스는 새로운 서브 스레드를 나타냅니다. 이 스레드는 task의 run() 메서드(즉, 람다 표현식으로 정의된 부분)를 실행합니다.
- thread.start();를 호출하면 새로운 서브 스레드가 시작되고, 이 스레드에서 "작업 시작"과 "작업 완료"를 출력하는 작업이 수행됩니다.
요약
- 메인 스레드: main 메서드에서 실행되는 기본 스레드로, 프로그램의 초기 실행 컨텍스트입니다.
- 서브 스레드: new Thread(task)를 통해 생성된 새로운 스레드로, 비동기적으로 task를 실행합니다.
따라서, 메인 스레드는 프로그램의 진입점인 main 메서드에서 실행되고, 서브 스레드는 Thread 인스턴스 내부에서 실행되는 것입니다