본문 바로가기

강좌/JAVA THREAD

자바 쓰레드(Thread) - 쓰레드(Thread)의 중지 예제

1. flag방식으로 쓰레드 중지예제

코드를 보면 어렵지 않다. 메인 메소드에서 다른 클래스(스레드 상속) 객체 생성후 호출

그러면 StopThread에서 while문을 돌면서 Thread is alive를 찍는다.

그리고 난후 메인에서 잠깐 쉬고 플래그를 변경하는 메소드를 호출하면 플래그가 바뀌면서

스레드가 중지 된다.

 

 

스레드를 중지할수 있는 방법중 하나지만 만약 while문안의 로직이 엄청 복잡하고 오래 걸린다면

즉각 중지를 시키지 못하고 원하는 타이밍을 놓칠 경우도 있다. 조금 문제가 될수도 있다.

 

2. interrupt()를 이용한 예제

위의 예제를 interrupt()를 이용해서 바꿨다.

 

우선 메인 메소드에서 flag를 호출하는 메소드 대신(위의 예제 참조) 생성한 스레드 객체에 interrupt()를 호출했다.

 

 

그러면 아래 스레드가 동작하는 곳에서 while문에서 Thread.currentThread().isInterrupted()를 호출해서 이 스레드가

interrupt가 걸렸는지 안걸렸는지 체크해서 while문을 돌기때문에 걸렸으면 InterruptedException오류를 내고

루프를 빠져 나갈수 있다.