07.스레드우선순위및 유령 스레드
스레드 우선순위 및 유령 스레드
- 우선 순위 숫자가 클 수록 우선 순위가 높다 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
// 데몬스레드가 실행 될 이유가 없기때문에 우선순위가 가장 낮음
댓글남기기