1 분 소요

스레드 우선순위 및 유령 스레드

  • 우선 순위 숫자가 클 수록 우선 순위가 높다 MIN 1~ MAX(10)
package javastudy;

public class Proagram7 {

	public static void main(String[] args) {

		Runnable subMain = new Runnable() {

			@Override
			public void run() {
				print();
			}
		};

		Thread th1 = new Thread(subMain);
		th1.setName("sub1");
		Thread th2 = new Thread(subMain);
		th2.setName("sub2");
//		th2.setPriority(Thread.MIN_PRIORITY);
		th2.setDaemon(true);

		th1.start(); // 꼭 있어야 한다
		th2.start(); // 꼭 있어야 한다

		Thread th = Thread.currentThread();
		th.setName("Main");

		print();
	}

	private static void print() {

		Thread th = Thread.currentThread();

		for (int i = 0; i < 100; i++) {
			try {
				Thread.sleep(20);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			// 메인일 경우 다르게 호출하고 싶을경우

			if (th.getName().equals("Main"))
				System.out.printf("<%s[%d] : %d\n", th.getName(), th.getId(), i + 1);
			else
				System.out.printf("%s[%d] : %d\n", th.getName(), th.getId(), i + 1);
		}
	}
}


<Main[1] : 98
sub2[15] : 98
sub1[14] : 99
<Main[1] : 99
sub2[15] : 99
sub1[14] : 100
<Main[1] : 100
sub2[15] : 100 //업무는 가지고 있지않지만 다른 스레드를 도와주는 데몬 스레드

 

스레드는 소거해 가지 않기 때문에 데몬스레드가 수거해간다 :가비지 컬렉션 다른 업무를 백업해주는 업무를 한다(보조적인)

자원을 소거해간다

공유자원의 데이터결함을 체크할때

sub2[15] : 98
sub1[14] : 99
<Main[1] : 99
sub1[14] : 100
sub2[15] : 99 
<Main[1] : 100
// 데몬스레드가 실행 될 이유가 없기때문에 우선순위가 가장 낮음

카테고리:

업데이트:

댓글남기기