스레드 생성 - Thread 클래스 상속
스레드 객체를 생성하고 start()를 호출해야 스택 공간을 할당 받고 스레드 작동
>> 이름을 주지 않으면 Thread-0처럼 임의의 이름 부여
>> Thread-0는 run() 메서드의 스택 프레임을 스택에 올리면서 메서드 시작
스레드간 실행 순서는 보장 x
start() vs run()
run() 메서드를 직접 호출하면?
별도의 스레드가 run()을 실행하는 것이 아닌 main 스레드가 run() 호출
>> 별도의 스레드에서 재정의한 run() 메서드를 실행하려면 반드시 start() 호출
사용자 스레드
프로그램의 주요 작업 수행
작업이 완료될 때까지 실행
모든 user 스레드 종료
>> JVM 종료
데몬 스레드
백그라운드에서 보조적 작업 수행
모든 user 스레드 종료
>> 데몬 스레드 자동 종료
setDaemon(true) : 데몬 스레드로 설정
>> false가 기본 값 (user 스레드가 기본)
스레드 생성 - Runnable
장점
>> 상속의 자유로움 : 다른 클래스를 상속받아도 문제 없이 구현
>> 코드의 분리 : 스레드와 실행할 작업을 분리해서 코드의 가독성 높힘
>> 여러 스레드가 동일한 Runnable 객체 공유 가능
단점
>> 코드의 복잡도
>> Runnable 객체를 생성하고 Thread에 전달하는 과정 추가
출처 : 김영한, 김영한의 실전 자바 - 고급 1편
'Java' 카테고리의 다른 글
Java / 인터럽트 (0) | 2025.05.16 |
---|---|
Java / 스레드 제어와 생명 주기 (0) | 2025.05.15 |
Java / 프로세스와 스레드 (0) | 2025.05.11 |
Java / 컬렉션 프레임워크 - 순회, 정렬 (0) | 2025.03.11 |
Java / 컬렉션 프레임워크 - Map, Stack, Queue (0) | 2025.03.09 |