JAVA

[Thread] 스레드의 우선순위

2023. 2. 26. 16:49
목차
  1. 스레드의 우선순위
  2. 스레드 그룹

스레드의 우선순위

작업의 중요도에 따라 스레드의 우선순위를 다르게 하여 특정 스레드가 더 많은 작업시간을 갖게 할 수 있다.

 

void setPriority(int newPriority)	스레드의 우선순위를 지정한 값으로 변경한다.
int getPriority()	스레드의 우선순위를 반환한다.

public static final int MAX_PRIORITY = 10	// 최대 우선 순위
public static final int MIN_PRIORITY = 1	// 최소 우선 순위
public static final int NORM_PRIORITY = 5	// 기본 우선 순위

자바에서는 1 ~ 10 사이의 우선순위 값을 가지며 숫자가 높을수록 우선순위가 높다.

스레드의 우선순위는 스레드를 생성한 스레드로부터 상속받는다. main 메서드를 수행하는 스레드는 우선순위가 5이므로 main 메서드 내에서 생성하는 스레드의 우선순위는 따로 설정하지 않는 한 자동적으로 5가 된다.

 

우선순위는 스레드를 실행하기 전에만 변경할 수 있다.

 

 

 

우리가 지정하는 우선순위는 희망사항이고, 실제로 우선순위를 결정하는 것은 OS의 스케줄러이다.

우선순위가 높으면 먼저 작업이 시작되고 끝날 확률이 높을 것이라고 기대하는 것이다.

 

 

class ThreadEx08 {
	public static void main(String args[]) {
		ThreadEx8_1 th1 = new ThreadEx8_1();
		ThreadEx8_2 th2 = new ThreadEx8_2();

		th2.setPriority(7);
		//th1은 따로 지정해주지 않았기 때문에 기본값인 5가 된다.

		System.out.println("Priority of th1(-) : " + th1.getPriority() );
		System.out.println("Priority of th2(|) : " + th2.getPriority() );
		th1.start();
		th2.start();
	}
}

class ThreadEx8_1 extends Thread {
	public void run() {
		for(int i=0; i < 300; i++) {
			System.out.print("-");
			for(int x=0; x < 10000000; x++);
		}
	}
}

class ThreadEx8_2 extends Thread {
	public void run() {
		for(int i=0; i < 300; i++) {
			System.out.print("|");
			for(int x=0; x < 10000000; x++);
		}
	}
}

 

 

스레드 그룹

  • 서로 관련된 스레드를 그룹을 묶어서 다루기 위한 것
  • 모든 스레드는 반드시 하나의 스레드 그룹에 포함되어 있어야 한다.
  • 스레드 그룹을 지정하지 않고 생성한 스레드는 'main스레드 그룹'에 속한다.
  • 자신을 생성한 스레드(부모 스레드)의 그룹과 우선순위를 상속받는다.
Thread(ThreadGroup group, String name)
Thread(ThreadGroup group, Runnable target)
Thread(ThreadGroup group, Runnable target, String name)
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
ThreadGroup getThreadGroup()	스레드 자신이 속한 스레드 그룹을 반환한다.
void uncaughtException(Thread t, Throwable e)	처리되지 않은 예외에 의해 스레드 그룹의 스레드가 실행이 종료되었을때, JVM에 의해 이 메서드가 자동적으로 호출된다.

 

'JAVA' 카테고리의 다른 글

[Thread] sleep(), interrupt()와 interrupted()  (0) 2023.02.26
[Thread] 데몬 스레드, 스레드의 상태  (0) 2023.02.26
[Thread] 싱글 스레드와 멀티 스레드, 스레드의 I/O 블로킹  (0) 2023.02.26
[Thread] 프로세스와 스레드, 스레드의 구현과 실행  (0) 2023.02.26
[Collections Framework] Comparator, Comparable  (0) 2023.02.24
  1. 스레드의 우선순위
  2. 스레드 그룹
'JAVA' 카테고리의 다른 글
  • [Thread] sleep(), interrupt()와 interrupted()
  • [Thread] 데몬 스레드, 스레드의 상태
  • [Thread] 싱글 스레드와 멀티 스레드, 스레드의 I/O 블로킹
  • [Thread] 프로세스와 스레드, 스레드의 구현과 실행
ewok
ewok
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • sqld 자격증
  • git bash
  • GIT
  • sqld 합격
  • SQLD
  • merge commit
  • 버전 관리
  • branch
  • this
  • base
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • 생성자
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • 브랜치
  • 노랭이

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
[Thread] 스레드의 우선순위
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.