Java는 Thread 클래스의 Interrupted() 함수를 사용하여 현재 스레드가 중단되었는지 여부를 결정합니다.
Java 다중 스레드 프로그래밍에서 중단은 일반적인 스레드 통신 메커니즘입니다. 스레드는 interrupt()
메서드를 호출하여 다른 스레드에 인터럽트 신호를 보낼 수 있습니다. 인터럽트 신호를 받은 스레드는 인터럽트에 응답하는 방법을 결정할 수 있습니다. Java의 Thread
클래스는 현재 스레드가 중단되었는지 여부를 확인하는 interrupted()
메서드를 제공합니다. interrupt()
方法向另一个线程发送中断信号。接收到中断信号的线程可以决定如何响应中断。Java中的 Thread
类提供了 interrupted()
方法,用于判断当前线程是否被中断。
interrupted()
方法是一个静态方法,它返回一个布尔值。当调用该方法时,它会判断当前线程是否被中断,并且清除中断状态,也就是将中断状态重新设置为 false。如果线程在调用 interrupted()
方法之前被中断过,那么 interrupted()
方法会返回 true;否则,返回 false。
下面通过一个简单的示例来说明 interrupted()
方法的使用:
public class InterruptExample implements Runnable { public void run() { try { System.out.println("线程开始执行"); for (int i = 1; i <= 10; i++) { System.out.println("执行第 " + i + " 次任务"); Thread.sleep(1000); if (Thread.interrupted()) { System.out.println("线程收到中断信号"); throw new InterruptedException(); } } } catch (InterruptedException e) { System.out.println("线程被中断"); } finally { System.out.println("线程结束执行"); } } public static void main(String[] args) { Thread thread = new Thread(new InterruptExample()); thread.start(); try { Thread.sleep(5000); thread.interrupt(); } catch (InterruptedException e) { e.printStackTrace(); } } }
在上面的示例中,我们创建了一个实现了 Runnable
接口的类 InterruptExample
。在 run()
方法中,我们使用一个循环来模拟线程执行的任务。每次任务执行完后,线程会通过 Thread.sleep()
方法暂停1秒钟。在每次任务执行之前,我们通过调用 Thread.interrupted()
方法来判断线程是否被中断,如果是,则抛出 InterruptedException
异常。
在 main()
方法中,我们创建了一个新的线程,并使用 start()
方法启动线程。然后,主线程暂停5秒钟,并调用 interrupt()
方法向新线程发送中断信号。通过这个示例,我们可以观察到以下几点:
run()
方法中执行10次任务。InterruptedException
异常。Thread.interrupted()
方法之前被中断,那么 Thread.interrupted()
方法会返回 true。Thread.interrupted()
方法后,线程的中断状态会被重置为 false。通过使用 interrupted()
方法,我们可以方便地判断当前线程是否被中断,并在适当的时候作出相应的处理。但需要注意的是,当线程被中断时,它不会立即停止执行,而是会等到下一个可中断的状态(如 wait()
、sleep()
、join()
interrupted()
메서드는 부울 값을 반환하는 정적 메서드입니다. 이 메서드가 호출되면 현재 스레드가 중단되었는지 확인하고 중단 상태를 지웁니다. 즉, 중단 상태를 false로 재설정합니다. interrupted()
메서드는 interrupted()
메서드를 호출하기 전에 스레드가 중단된 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다. 🎜🎜다음은 interrupted()
메서드의 사용을 설명하는 간단한 예입니다. 🎜rrreee🎜위 예에서는 Runnable
인터페이스를 구현하는 클래스를 만들었습니다. InterruptExample
. run()
메서드에서는 루프를 사용하여 스레드가 수행하는 작업을 시뮬레이션합니다. 각 작업이 실행된 후 Thread.sleep()
메서드를 통해 스레드가 1초 동안 일시 중지됩니다. 각 작업이 실행되기 전에 Thread.interrupted()
메서드를 호출하여 스레드가 중단되었는지 확인합니다. 그렇다면 InterruptedException
예외가 발생합니다. 🎜🎜 main()
메서드에서 새 스레드를 생성하고 start()
메서드를 사용하여 스레드를 시작합니다. 그런 다음 메인 스레드는 5초 동안 일시 중지하고 interrupt()
메서드를 호출하여 새 스레드에 인터럽트 신호를 보냅니다. 이 예를 통해 다음 사항을 관찰할 수 있습니다. 🎜run()
메서드에서 작업을 10번 실행합니다. InterruptedException
예외가 발생합니다. Thread.interrupted()
메서드를 호출하기 전에 스레드가 중단되면 Thread.interrupted()
메서드는 true를 반환합니다. Thread.interrupted()
메서드를 호출한 후 스레드의 중단 상태가 false로 재설정됩니다. interrupted()
메서드를 사용하면 현재 스레드가 중단되었는지 여부를 쉽게 확인하고 적절한 경우 그에 따라 처리할 수 있습니다. 그러나 스레드가 중단되면 실행이 즉시 중단되지 않고 다음 중단 가능한 상태(예: wait()
, sleep() 코드)까지 기다립니다. >, <code>join()
)이 나타나면 중지됩니다. 따라서 멀티스레드 코드를 작성할 때 스레드가 리소스를 안전하게 중지하고 해제할 수 있도록 스레드의 인터럽트 처리 논리를 합리적으로 설계해야 합니다. 🎜위 내용은 Java는 Thread 클래스의 Interrupted() 함수를 사용하여 현재 스레드가 중단되었는지 여부를 확인합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!