JAVA - 쓰레드 (4)

jodbsgh·2022년 4월 22일
0

💡"JAVA"

목록 보기
47/67

쓰레드의 우선순위(priority of thread)

  • 작업의 중요도에 따라 쓰레드의 우선순위를 다르게 하여 특정 쓰레드가 더 많은 작업시간을 갖게 할 수 있다.
void setPriority(imt newPriority)		//쓰레드의 우선순위를 지정한 값으로 변경한다.
int getPriority()						//쓰레드의 우선순위를 반환한다.

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

예제)
class ThreadPriorityTest{
    public static void main (String args[])
    {
        Thread1 th1 = new Thread1();
        Thread2 th2 = new Thread2();

        th1.setPriority(5);		
        //default 값이 5임 따라서 주석처리 하여도 결과는 같다.
        th2.setPriority(7);

        System.out.pruntln("Priority of th1(-) : " + th1.getPriority());
        System.out.pruntln("Priority of th2(\) : " + th2.getPriority());

        th1.start();
        th2.start();
    }
}

class ThreadTest1 extends Thread{
	public void run(){
    	for(int i=0; i<300; i++)
        {
        	System.out.println("-");
            for(int x=0; x<10000000; x++); //시간지연용
        }
    }
}

class ThreadTest2 extends Thread{
	public void run(){
    	for(int i=0; i<300; i++)
        {
        	System.out.println("\");
            for(int x=0; x<10000000; x++); //시간지연용
        }
    }
}

실행결과
Priority of th1(-) : 5
Priority of th2(\) : 7
// "-", "\"의 출력결과는 실행할 때 마다 다르다.

실행 처리가 시급한 것부터 우선순위를 높게 부여하는 것이 좋다.
윈도우의 경우 마우스의 우선순위가 매우 높게 처리되어 있음.

쓰레드 그룹

  • 서로 관련된 쓰레드를 그룹으로 묶어서 다루기 위한 것
  • 모든 쓰레드는 반드시 하나의 쓰레드 그룹에 포함되어 있어야 한다.
  • 쓰레드 그룹을 지정하지 않고 생성한 쓰레드는 'main쓰레드 그룹'에 속한다.
  • 자신을 생성한 쓰레드(부모 쓰레드)의 그룹과 우선순위를 상속받는다.
Thread(ThreadGroup group, String name)
Thread(ThreadGroup group, Runnable target)
Thread(ThreadGroup group, Runnable target, Strung name)
Thread(TjreadGroup group, Runnable target, String name, long stackSize)
ThreadGroup getThreadGroup()	
//쓰레드 자신이 속한 쓰레드 그룹을 반환한다.

void uncaughtException(Thread t, Throwable e) 
//처리되지 않은 예외에 의해 쓰레드 그룹의 쓰레드가 실행이 종료되었을 때, 
//JVM에 의해 메서드가 자동적으로 호출된다.
profile
어제 보다는 내일을, 내일 보다는 오늘을 🚀

0개의 댓글