2008년 10월 12일 일요일

JAVA Thread Interrupt

1. Flag 에 의한 Interrupt

public static void main(String[] args) {
 
ThreadStart threads = new ThreadStart(); // 스레드 생성
Thread thread = new Thread(threads);
thread.start(); // 스레드 시작
 
// TODO ...
 
threads.stop(); // 스레드 종료
 }

class ThreadStart implements Runnable {


private boolean interruption = false; //  Flag

public void run(){


while (!interruption){  // Flag 가 True 때 루프를 빠져 나옴

// TODO ...

}

public void stop(){

 interruption = true; // Flag 를 true 로 셋팅

}

}



2. 직접 thread.interrupt() 호출에 의한 방법

 public static void main(String[] args) {
 
ThreadStart threads = new ThreadStart(); // 스레드 생성
Thread thread = new Thread(threads);
thread.start(); // 스레드 시작
 
// TODO ...
 
  thread.interrupt(); // 스레드 인터럽트호출
 
 }

class ThreadStart implements Runnable {


public void run(){


try{


while (!Thread.currentThread().isInterrupted()){

// isInterrupted() 는 스레드의 인터럽트 간섭을 확인하는 Flag

     

}


}catch (InterruptedException e) {}


}finally {


// TODO ...


}


 

3. Thread.stop,Thread.suspend,Thread.resume 는 권장하지 않는 방식임

영     문  : http://java.sun.com/j2se/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html

한글번역본 : http://pllab.kw.ac.kr/j2seAPI/guide/misc/threadPrimitiveDeprecation.html




4. Thread 상태

사용자 삽입 이미지











댓글 없음:

댓글 쓰기