Java

데몬 쓰레드와 사용자 쓰레드, 쓰레드 그룹 및 우선순위

KJihun 2023. 5. 29. 18:01
728x90
데몬 쓰레드

데몬 쓰레드란, background에서 실행되는 낮은 우선순위를 가진 쓰레드를 칭한다.

보조적인 역할을 담당하며 대표적인 데몬 쓰레드로는 메모리 영역을 정리해주는 GC가 있다.

 

데몬 쓰레드 생성코드

	//쓰레드 생성
	Thread thread = new Thread(deamon);

    //true입력 시 데몬 쓰레드가 됨
    //데몬 쓰레드는 사전에 정의된 횟수와 상관없이 메인 쓰레드가 동작 완료 시 종료됨
    thread.setDaemon(true);

 

사용자 쓰레드

사용자 쓰레드는 foreground에서 실행되는 높은 우선순위를 가진 쓰레드를 칭한다.

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

 

쓰레드 우선순위와 쓰레드 그룹

작업의 중요도에 따라 쓰레드의 우선순위를 다르게 부여하는 것을 말한다.

우선순위가 높은 쓰레드는 더 많은 작업시간을 부여받아 빠르게 처리될 가능성이 높다.

변수가 많기에 100% 보장은 할 수 없다.

쓰레드는 생성될 때 우선순위가 정해진다.

 

우선순위는 1 ~ 10 사이의 숫자로 지정할 수 있다.

minimum(1) 및 maximum(10) 제한을 초과하는 경우 IllegalArgumentException 발생한다.

  • 기본 우선 순위(NROM_PRIORITY) : 5
  • 최소 우선 순위(MIN_PRIORITY) : 1
  • 최대 우선 순위(MAX_PRIORITY) : 10

이 우선순위는 OS가 아닌 JVM에서 설정한 우선순위이다.

 

우선순위 값 설정 코드

.setPriority(2);		//우선순위 2 부여

 

 

쓰레드 그룹

관련이 있는 쓰레드들을 그룹으로 묶어 다룰 수 있다.

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

쓰레드 그룹을 지정하지 않으면 자동으로 main 그룹(main에 종속)에 포함된다.

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

 

쓰레드 그룹 설정 코드

    //ThreadGroup 클래스로 객체 생성(그룹 생성).
    //생성 후 나중에 할당하는 방식
    ThreadGroup group1 = new ThreadGroup("Group1");

    //Thread 객체 생성시 첫번째 매개변수로 그룹명을 넣어줌
    //Thread(ThreadGroup Group, Runnable target, String name)
    Thread thread1 = new Thread(group1, task, "Thread1");
    Thread thread2 = new Thread(group1, task, "Thread2");

'Java' 카테고리의 다른 글

동기화(synchronized)  (0) 2023.05.30
쓰레드 제어 메소드  (0) 2023.05.29
람다식을 이용한 멀티 쓰레드  (0) 2023.05.29
싱글 쓰레드와 멀티 쓰레드  (0) 2023.05.29
프로세스와 쓰레드  (0) 2023.05.29