Java는 Thread 클래스의 Interrupt() 함수를 사용하여 스레드의 실행을 중단합니다.
멀티 스레드 프로그래밍에서는 실행 중인 스레드를 중단해야 하는 경우가 있습니다. Java에서는 Thread 클래스의 Interrupt() 함수를 사용하여 스레드 실행을 중단할 수 있습니다. 이 기사에서는 Interrupt() 함수를 사용하는 방법을 소개하고 코드 예제를 제공합니다.
interrupt() 함수는 스레드 실행을 중단하는 데 사용됩니다. 이 함수를 호출하면 스레드의 인터럽트 플래그 비트가 true로 설정되지만 이 시점에서 스레드는 실행을 즉시 종료하지 않습니다. 구체적인 인터럽트 동작은 개발자가 결정합니다. 스레드의 isInterrupted() 메서드를 사용하여 인터럽트 플래그 비트를 확인하고 적절한 시점에 스레드 실행을 종료할 수 있습니다.
다음은 스레드를 중단하기 위해 Interrupt() 함수를 사용하는 샘플 코드입니다.
public class MyThread extends Thread { public void run() { while (!isInterrupted()) { // 线程的执行逻辑 System.out.println("Thread is running..."); } System.out.println("Thread is interrupted, exiting..."); } public static void main(String[] args) throws InterruptedException { MyThread thread = new MyThread(); thread.start(); // 主线程休眠一段时间后中断子线程 Thread.sleep(1000); thread.interrupt(); } }
위 코드에서는 Thread 클래스를 상속하는 MyThread 스레드 클래스를 정의합니다. run() 메서드에서는 while 루프를 사용하여 스레드의 실행 논리를 시뮬레이션합니다. 각 루프가 시작되기 전에 isInterrupted() 메서드를 사용하여 스레드의 인터럽트 플래그 비트가 true인지 확인하고 루프를 종료합니다. 스레드가 중단되면 프롬프트 메시지가 출력됩니다. main() 메소드에서는 MyThread 스레드 객체를 생성하고 start() 메소드를 사용하여 스레드를 시작합니다. 그런 다음 메인 스레드가 1초 동안 Sleep 상태가 된 후 스레드 객체의 Interrupt() 메서드를 호출하여 스레드의 실행을 중단합니다.
위 코드를 실행하면 다음 출력을 볼 수 있습니다.
Thread is running... Thread is running... Thread is running... Thread is running... Thread is running... Thread is interrupted, exiting...
출력에서 볼 수 있듯이 스레드는 중단된 후 즉시 실행을 종료했습니다. 여기서 주목해야 할 점은 스레드가 중단될 때 스레드가 차단된 상태(예: sleep(), wait() 등의 메서드 호출)에 있으면 InterruptedException이 발생한다는 것입니다. 예외를 포착한 후 필요에 따라 적절하게 처리할 수 있습니다.
실제 개발에서는 Interrupt() 함수를 사용하여 스레드를 정상적으로 중지할 수 있습니다. run() 메소드의 적절한 위치에 있는 인터럽트 플래그 비트를 판단하고 루프를 종료하거나 다른 로직을 처리함으로써 스레드는 인터럽트 신호를 수신한 후 제 시간에 실행을 중지하여 불필요한 자원 낭비를 피할 수 있습니다.
요약하자면, Java의 Thread 클래스의 Interrupt() 함수를 사용하여 스레드의 실행을 중단할 수 있습니다. 인터럽트 플래그를 합리적으로 판단함으로써 스레드를 정상적으로 중지할 수 있습니다. 멀티스레드 프로그램을 작성할 때, Interrupt() 함수의 사용법을 이해하고 익히는 것이 매우 중요합니다.
위 내용은 Java는 Thread 클래스의 Interrupt() 함수를 사용하여 스레드 실행을 중단합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!