10/11 18-8 ThreadStop
ThreadStop
프로그램 종료 전 까지 계속 진행되는 스레드를 멈춰보자
방법이 2가지가 있는데 그 중 하나는 플래그변수는 비추천하신다고 하니 이유만 살짝 설명하고 넘어가고
나머지 다른방법을 정리하면 되겠다.플래그변수 이용하게 된다면 반복실행되는 while문 안쪽을 무조건 다 거쳐야하는데... 만약 그게 너무 길면....?
중간에 멈출수있는 방법이 없음 즉, 스레드 멈추지 않을 수 있음..! isflag를 true로 설정해도(반복을 막을 수 있는 키?) while문 안의 모든 명령문의 실행이 끝나야 다시 반복조건 검사하니 이것은 쓰지 않도록...대신interrupt()메소트 호출 (이걸 추천!) - interruptedExeption 예외 발생 -> catch절로 빠짐
스레드 작업 중간에 멈출 수 있다는 장점!!
class ThreadStop extends Thread{ @Override
public void run() { int i=1;
try {
while(true) {
System.out.println("i="+i++);
sleep(1000);
}/////while
} catch (InterruptedException e) {System.out.println("interrupt()호출");}
finally {
System.out.println("스레드 중지");
}
}//////////run()
}////////////ThreadStop
메인
ThreadStop thread = new ThreadStop();
thread.start();
try {
Thread.sleep(5000); ==> 5초간 멈추기
} catch (InterruptedException e) {e.printStackTrace();}
if( thread.isAlive() ) thread.interrupt(); => 스레드 아직 살아있노? Running 멈추기