中断线程2025 年 3 月 28 日 | 阅读 2 分钟 如果任何线程处于休眠或等待状态(即,调用了 sleep() 或 wait()),则在线程上调用 interrupt() 方法会中断休眠或等待状态,并抛出 InterruptedException。如果线程未处于休眠或等待状态,则调用 interrupt() 方法会执行正常行为,并且不会中断线程,但会将中断标志设置为 true。让我们首先查看 Thread 类为线程中断提供的方法。 Thread 类提供的用于中断线程的 3 种方法
中断线程停止工作的例子在本例中,中断线程后,我们将传播它,因此它将停止工作。如果我们不想停止线程,我们可以在调用 sleep() 或 wait() 方法的地方处理它。让我们首先看一个传播异常的例子。 TestInterruptingThread1.java 立即测试输出 Exception in thread-0 java.lang.RuntimeException: Thread interrupted... java.lang.InterruptedException: sleep interrupted at A.run(A.java:7) 中断线程不停止工作的例子在本例中,中断线程后,我们处理了异常,因此它将中断休眠但不会停止工作。 TestInterruptingThread2.java 立即测试输出 Exception handled java.lang.InterruptedException: sleep interrupted thread is running... 中断线程行为正常的例子如果线程未处于休眠或等待状态,则调用 interrupt() 方法将中断标志设置为 true,Java 程序员稍后可以使用该标志来停止线程。 TestInterruptingThread3.java 立即测试输出 1 2 3 4 5 isInterrupted 和 interrupted 方法怎么样?isInterrupted() 方法返回中断标志,即 true 或 false。静态 interrupted() 方法在返回中断标志后将其设置为 false(如果为 true)。 TestInterruptingThread4.java 立即测试输出 Code for interrupted thread code for normal thread code for normal thread code for normal thread 下一个主题Java 中的可重入监视器 |
我们请求您订阅我们的新闻通讯以获取最新更新。