학원/JAVA

10/11 18-8 ThreadStop

도원결의 2022. 10. 11. 23:44

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 멈추기