Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Java] 스레드 정상 실행 종료, interrupt( ): 리소스 정리 후 실행 종료 본문
𐂂 스레드 불안전 종료
Thread 정적 메서드 stop():
리소스(파일, 네트워크 연결)들이 불안전한 상태로 남겨진다.
리소스(파일, 네트워크 연결)들이 불안전한 상태로 남겨진다.
𐁍 interrupt() 메서드
SUSPENDED -> InterruptedException 예외 발생
run() 메서드를 정상실행종료 (리소스를 정리하고, TERMINATED)
⚠️ 스레드가 RUNNABLE or RUNNING일 때,
interrupt() 메서드가 호출되어도 InterruptedException이 발생하지 않는다.
run() 메서드를 정상실행종료 (리소스를 정리하고, TERMINATED)
⚠️ 스레드가 RUNNABLE or RUNNING일 때,
interrupt() 메서드가 호출되어도 InterruptedException이 발생하지 않는다.
𖠃 Thread.interrupted() 및 objThread.isInterrupted()
interrupt() 메서드 호출 여부 boolean 리턴
boolean status = Thread.interrupted(); //정적메서드
boolean status = objThread.isInterrupted(); //인스턴스 메서드
boolean status = Thread.interrupted(); //정적메서드
boolean status = objThread.isInterrupted(); //인스턴스 메서드
📜. PrintThread.java
public class PrintThread extends Thread {
@Override
public void run() {
while(true) {
System.out.println("실행 중");
if(Thread.interrupted()) {
break;
}
}
System.out.println("리소스 정리");
System.out.println("실행 종료");
}
}
📜. InterruptExample.java
public class InterruptExample {
public static void main(String[] args) {
Thread thread = new PrintThread();
thread.start();
try {
Thread.sleep(1000);
} catch(InterruptedException e) { }
thread.interrupt();
//...
//실행 중
//실행 중
//실행 중
//리소스 정리
//실행 종료
}
}
'Backend > 자바' 카테고리의 다른 글
[Java] 스레드 개수를 제한하는 스레드풀(ThreadPool)의 생성과 작업처리 요청 (0) | 2023.08.14 |
---|---|
[Java] 보조 역할을 수행하는 데몬(Daemon) 스레드 (0) | 2023.08.13 |
[Java] 공유객체 내부데이터에 대한 스레드 동기화와 정확한 작업교대 (0) | 2023.08.13 |
[Java] CPU스케쥴링에 따른 스레드(Thread) 상태와 상태 이동 메서드 (0) | 2023.08.12 |
[Java] 하나의 프로세스 안의 멀티스레드(메인스레드 + 多 작업스레드)의 구현 (0) | 2023.08.12 |
Comments