[java] 자바에서 스레드를 인터럽트하는 방법은?
자바에서 스레드를 인터럽트하는 것은 다른 스레드에게 해당 스레드를 중단하라는 신호를 보내는 방법입니다. 아래는 자바에서 스레드를 인터럽트하는 방법에 대한 예제 코드입니다.
public class MyThread extends Thread {
public void run() {
try {
// 스레드가 수행할 작업
// ...
while (!Thread.currentThread().isInterrupted()) {
// 스레드가 인터럽트되지 않은 경우 계속 실행
// ...
}
} catch (InterruptedException e) {
// InterruptedException이 발생하면 스레드가 중단됐음을 의미
// 필요한 처리를 수행
}
}
}
public class Main {
public static void main(String[] args) {
MyThread t = new MyThread();
t.start();
// 스레드 인터럽트
t.interrupt();
}
}
위의 예제 코드에서 MyThread
클래스는 Thread
클래스를 상속받아 스레드를 정의하고 있습니다.
run
메서드 내부에서는 스레드가 수행할 작업을 진행하며, while
루프를 통해 스레드가 인터럽트되지 않은 경우에 계속 실행됩니다.
인터럽트가 발생하면 InterruptedException
이 발생하고 해당 예외를 처리하여 스레드를 중단합니다.
메인 메서드에서는 MyThread
객체를 생성하고 start
메서드를 호출하여 스레드를 시작합니다.
그리고 t.interrupt()
를 호출하여 스레드를 인터럽트합니다.
하지만 중요한 점은 스레드를 인터럽트한다고 해서 스레드가 즉시 중단되지는 않는다는 것입니다. 인터럽트가 발생하면 해당 스레드는 인터럽트 상태가 되며, 스레드 내부에서 이 상태를 체크하여 작업을 중단하도록 구현해야 합니다.
더 자세한 내용과 예제를 확인하려면 Java 공식 문서, Java Tutorials를 참고하시기 바랍니다.