사용자 스레드 vs 데몬 스레드 강의에서요
323
작성한 질문수 8
메인스레드는 어플리케이션을 실행하는 최초의 스레드이자 어플리케이션 실행을 완료하는 마지막 스레드의 역할을 한다 고 되어있는데
제공해주신 예제 코드 chaper02 의 exam02 MultiThreadAppTerminatedExample 를 실행 시켜보면
메인스레드 종료가 먼저 출력 된뒤 다른 스레드들이 실행 중 이라고 출력 됩니다.
그러면 예제 코드에서 System.out.println("메인 스레드 종료"); 가 호출 된 뒤 실제로는 메인 쓰레드가 종료되지는 않고
다른 스레드들이 다 종료 될 때 까지 대기 중인 상태 인가요?
답변 1
0
메인 스레드가 종료되지 않는 것이 아니라 어플리케이션이 종료되지 않은 것이라고 보시면 됩니다.
" 메인스레드는 어플리케이션을 실행하는 최초의 스레드이자 어플리케이션 실행을 완료하는 마지막 스레드의 역할을 한다 " 의 의미는 비동기가 아닌 동기적 실행 흐름에서의 의미를 설명한 것이라고 보면 됩니다.
메인 스레드가 다른 모든 스레드가 종료될 때 까지 대기하는 것(예를 들면 join(), sleep()) 이 아니라면 메인 스레드는 자기의 역할을 수행하고 종료하게 되고 JVM 자체는 모든 스레드가 종료되면 데몬스레드를 강제로 종료시키고 JVM 도 최종 종료하게 됩니다
그래서 메인 스레드는 대기를 위한 별도의 API 를 호출하지 않는다면 대기하지 않고 종료됩니다.
멀티스레드 단일스레드
0
56
0
new Condition 부분 질문
0
83
1
13:00 강의 내용 이해 질문
0
99
1
강의 출시 질문 있습니다.
0
117
1
InterruptedExceptionThreadStopExample 질문입니다.
0
94
2
instance.getMyField()의 값이 왜 다른가요?
0
115
1
해당 강의 내용 무단 도용 신고
0
211
2
Thread Waiting 상태 관련 질문 드립니다.
0
186
1
단일연산변수 api
0
125
0
synchronized 블럭과 메인메모리 반영
0
146
0
실무에서 자바가 제공하는 락을 사용하는 경우
1
243
1
뮤텍스나 세마포어는 busy waiting이 없는 게 맞을까요?
0
159
1
16:50부분에서 타입락 질문드립니다.
0
110
2
16분 7초 뮤텍스 코드 관련해 질문드립니다.
0
160
2
동기화가 보장된다고 하더라도 스레드간 데이터 불일치가 발생할 수 있지 않나요??
0
199
2
리액티브-part2
0
180
2
문자열 풀 값을 이용한 String 변수
0
207
2
스레드 라이브러리는 커널과 같은 역할을 하지 못하나요?
0
173
1
자식 프로세스를 쓰는 이유
0
186
1
커널 모드 전환시 질문이 있습니다!
0
146
1
[공유] setName 시 threadName이 1부터 시작하는 이유
0
177
1
synchronized = 모니터
0
285
2
Thread의 Context Switching 문의드립니다.
1
256
1
동기 & 논블록킹 질문 드립니다.
0
232
2





