본문 바로가기
Java

Java) 데몬 쓰레드와 사용자 쓰레드

by NH_club 2023. 9. 18.
데몬 쓰레드와 사용자 쓰레드

!!! JVM은 사용자 쓰레드의 작업이 끝나면 기능을 전부 수행하지 않은 데몬 쓰레드도 자동으로 종료시켜 버림.!!!

데몬 쓰레드: 보이지 않는 곳에서  실행되는 낮은 우선순위를 가진 쓰레드 (대표적인 데몬 쓰레드: 가비지 컬렉터)

쓰레드를 만들 때 thread.setDaemon(true)를 통해 명시적으로 할당해 줘야 함

사용자 쓰레드: 보이는 곳에서 실행되는 높은 우선순위를 가진 쓰레드 (대표적인 사용자 쓰레드: 메인 쓰레드)

프로그램 기능을 담당하며 대표적인 사용자 쓰레드로는 메인 쓰레드가 있다.

쓰레드 우선순위

쓰레드 작업의 중요도에 따라서 쓰레드의 우선순위를 부여할 수 있다.

JVM에 의해 지정되며, 최대(10), 최소(1), 보통(5)의 우선 순위를 갖는다. 기본 값은 보통(5) 우선 순위이다.

thread.setPriority()로 우선 순위를 지정할 수 있다.

우선순위가 높다고 반드시 쓰레드가 먼저 종료되는 것은 아니다. 단지 확률이 높은 것.

가벼운 기능에는 별 효과를 못 느끼지만, 무거운 기능에는 확연한 차이를 확인할 수 있다.

쓰레드 그룹

쓰레드를 한번에 묶어서 기능을 제어해야 하기 때문에 그룹이 중요하다.

쓰레드들은 기본적으로 그룹에 포함되어 있다.

JVM이 시작되면 system 그룹이 생성되고 쓰레드들은 기본적으로 system 그룹에 포함된다.

메인 쓰레드는 system 그룹 하위에 있는 main 그룹에 포함된다.

모든 쓰레드들은 반드시 하나의 그룹에 포함되어 있어야 한다.

쓰레드 그룹을 지정받지 못한 쓰레드는 자신을 생성한 부모 쓰레드의 그룹과 우선 순위를 상속받게 된다.

따라서 쓰레드 그룹을 지정하지 않으면 해당 쓰레드는 자동으로 main 그룹에 포함된다.

'Java' 카테고리의 다른 글

Java) 배열  (0) 2023.09.21
Java) 프로세스와 쓰레드  (0) 2023.09.14
Java) 병목현상 해결 과정  (0) 2023.08.23
JMeter 변수 설정  (0) 2023.08.15
JMeter 성능 테스트  (0) 2023.08.15