티스토리 뷰
스레드 생성 전에는 프로세스가 작동하기 위한 최소한의 스레드 하나가 있어야 한다. 그래서 자바는 실행 시점에 main 이라는 이름의 스레드를 만들고 프로그램 시작점인 main 메서드를 실행한다.
스레드 생성 후를 보면 스레드 객체를 생성하고 start 메서드를 호출했을 때 자바는 스레드를 위한 별도의 스택 공간을 할당하게 된다. 새로운 스레드가 사용할 전용 스택 공간에 run 메서드의 스택 프레임을 스택에 올리면서 run 메서드를 시작한다. 메서드를 실행하면 스택 위해 스택 프레임이 쌓이게 되는 것이다.
스레드 간 실행 순서는 보장하지 않는다. 스레드는 동시에 실행되기 때문이다.
* start() 메서드
- 스택 공간을 할당하면서 스레드를 시작하는 아주 특별한 메서드로 run 메서드를 실행한다.
- main 스레드가 아닌 별도의 스레드를 생성하고 재정의한 run 메서드를 실행하려면 반드시 start()를 호출해야한다.
* 데몬 스레드
- 사용자 스레드: 프로그램의 주요 작업 수행, 작업이 완료될 까지 실행, 유저 스레드가 종료되면 jvm도 종료
- 데몬 스레드: 백그라운드에서 보조적인 작업 수행, 유저 스레드가 종료되면 데몬 스레드는 자동으로 종료
* Thread 클래스 상속 방식
- 장점: 간단한 구현
- 단점: 상속 제한, 유연성 부족
* Runnable 인터페이스 구현 방식
- 장점: 상속의 자유로움, 코드 분리, 여러 스레드가 동일한 Runnable 객체 공유로 자원 관리 효율적
- 단점: 코드가 복잡
출처: 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 인프런 강의
'JAVA' 카테고리의 다른 글
[멀티스레드와 동시성] - 1. 프로세스와 스레드 (0) | 2024.07.25 |
---|---|
자바 채팅 프로그램 (0) | 2024.05.29 |
다형성2 (0) | 2024.01.15 |
다형성1 (0) | 2024.01.07 |
1. JDK, JRE, JVM (0) | 2023.11.29 |