- 우선권은 어떤 쓰레드가 Run 상태를 더 많이 차지할 것인가의 문제.
즉 우선권이 높으면 그만큼 Run 상태에 자주 들어갈 수 있음. 쓰레드가 NotRunnable 상태가 될 수 있는 두가지 방법.
- 쓰레드를 NotRunnable 상태로 만드는 방법
-> sleep()을 이용해서 일정시간 동안만 대기시키는 방법(자동)
-> wait()와 notify()를 이용해서 대기와 복귀를 제어하는 방법(수동)
- sleep()과 wati()는 쓰레드를 NotRunnable 상태로 만듬.
-> sleep()의 경우는 주어진 시간 만큼만 NotRunnable 상태로 보내며, 시간이 완료되면 자동으로 Runnable 상태로 복귀.
-> wait()의 경우에는 사용자가 직접 wait()를 호출해서 NotRunnable 상태로 만들며, Runnable 상태로 되돌아오기 위해서는 notify()를 호출해 주어야 함.
-> sleep()은 자동이며 wait()와 notify()는 수동으로 처리.
- sleep()의 사용
-> try{
Threa.sleep(1000); // 시간의 단위는 1/1000초
}catch(InterruptedExption e){e.printStackTrace();}
- 1초만큼 Notrunnable 상태가 되며 1초가 지난 뒤에는 자동으로 Runnable 상태로 되돌아와서 작업을 재개. sleep()은 Thread의 스태틱 메서드이기 때문에 프로그램 어디서나 사용할 수 있으며, 일시적으로 작업을 중단(대기)시키는 역할을 함.
============================================================================================================
public class NotRunnableThread extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
int i = 0;
while(i<10){
System.out.println(i + "회 : " + System.currentTimeMillis() + "\t");
i = i + 1;
try{
this.sleep(1000);
}catch (Exception e) {
// TODO: handle exception
}
}
}
}
public class NotRunnableThreadMain {
public static void main(String[] args) {
NotRunnableThread s = new NotRunnableThread();
s.start();
}
}
'프로그래밍 정리 > 자바' 카테고리의 다른 글
멀티쓰레드와 문제점 (0) | 2013.06.17 |
---|---|
쓰레드 죽이기 (0) | 2013.06.17 |
쓰레드의 우선권 (0) | 2013.06.17 |
쓰레드의 상태 (0) | 2013.06.17 |
ObjectOutputStream와 ObjectInputStream : transient(객체직렬화) (0) | 2013.06.07 |