티스토리 뷰

프로그래밍언어/Java

스레드 우선순위

데니 Denny 2019. 6. 17. 16:12
반응형
SMALL

멀티 스레드는 동시성(Concurrency) 또는 병렬성(Parallelism)으로 실행된다.

동시성은 멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행하는 성질을 말하고

병렬성은 멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 성질을 말한다.

 

자바의 스레드 스케줄링은 Priority 방식과 Round Robin 방식을 사용한다.

Priority 방식은 우선순위가 높은 스레드가 실행 상태를 더 많이 가지도록 스케줄링 하는 것을 말한다.

Round Robin 방식은 시간 할당량(Time Slice)를 정해서 하나의 스레드를 정해진 시간만큼 실행하고 다시 다른 스레드를 실행하는 방식을 말한다.

 

Priority 방식에서 우선순위는 1~10으로 주어지며 1이 가장 낮고 10이 가장 높다.

우선순위를 부여하지 않으면 기본적으로 모든 스레드들은 5의 우선순위를 할당받는다.

 

우선 순위를 변경하고 싶다면 setPriority() 메소드를 이용하면 된다.

thread.setPriority(우선순위);

Parameter 값을 직접 줄 수도 있지만 가독성을 위해 Thread 클래스의 상수를 이용할 수도 있다.

thread.setPriority(Thread.MAX_PRIORITY); // 10
thread.setPriority(Thread.NORM_PRIORITY); // 5
thread.setPriority(Thread.MIN_PRIORITY); // 1

 

Priority Thread 예제

public class CalcThread extends Thread {
    public CalcThread(String name) {
        setName(name);
    }

    public void run() {
        for (int i = 0; i < 2000000000; i++) {

        }
        System.out.println(getName());
    }
}
public class Main {

    public static void main(String[] args) {
		for(int i = 1; i <= 10; i++) {
			Thread thread = new CalcThread("thread" + i);
			if(i != 10) {
				thread.setPriority(Thread.MIN_PRIORITY);
			} else {
				thread.setPriority(Thread.MAX_PRIORITY);
			}
			thread.start();
		}
    }
}

 

반응형
LIST

'프로그래밍언어 > Java' 카테고리의 다른 글

정적 바인딩 vs. 동적 바인딩  (0) 2019.06.13
JAVA 직렬화와 Transient Keyword  (0) 2019.06.13
RxJava 시작  (0) 2019.04.20
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함