当前位置: 首页 > 网络应用技术

Java的中断线程详细说明

时间:2023-03-05 20:45:01 网络应用技术

  Java中的线程中断是线程之间的协作模式。线程的中断符号无法直接终止线程的执行,但是中断线程是根据中断状态自行处理的,也就是说,“线程中断”不是字面的 - 线程确实被中断了,但是中断徽标徽标设置为true。

  此方法是“中断线程”,但仅设置为true的线程中断状态。至于中断结果线程的结果是否已死,等待新任务或继续运行到下一步,这取决于程序本身。

  该线程将不时检测此中断标记位置以确定是否应中断线程(中断标记值是否为true)。它不会立即被像停止方法这样的运行时线程中断,因此没有问题stop()方法。

  如果线程位于阻塞状态(例如线程调用线程。状态)处于阻止状态)。如果发现中断标记时发现线程是正确的,则将在这些阻止方法下抛出InterruptException异常,并且在抛出一个线程的中断标签位后立即清除异常,即重置为false。异常是从阻止状态醒来,并让程序员有足够的时间在结束线程之前处理中断请求。

  在锁定过程中同步的阻塞状态不能中断(徽标可以设置为true,但不会抛出异常,因此不能从阻塞状态退回)。相同的是,它不会被中断也就是说,如果发生死锁,则意味着如果发生死锁,则不可能中断等待僵局并等待的线程。,那么,如果等待时线程中断,它将引发InterruptException异常,这是一个非常有用的功能,因为它允许程序破坏Dead Lock Lock Lock Lock锁定。方法,等同于设置超时的Trylock方法。

  一种特殊情况是:阻止线程也可以中断,但不会引发异常,也不会恢复徽标位。

  如果要检测当前线程是否被中断,请使用此方法,因为它不会清除中断标记位置,也就是说,中断标签不会设置为false,这只是检测状态。

  有一种方法可以判断它是否被中断。thread.Interrupted(),但请谨慎使用。此方法被调用后,中断标签位将被清除,即重置为false。此方法是线程类的静态方法。

  中断()内部是当前呼叫线程的中断徽标,而ISIntrupted()是一个中断符号,该符号获得了调用IS互换方法的实例对象。

  以下验证:

  结果发现

  当线程等待某些特定条件时,睡眠功能,等待系列功能或作业()函数通常会调用以阻止当前线程。

  例如,线程调用螺纹。Sleep(3000),然后将呼叫线程被阻止,并且它不会从阻塞状态变为激活,直到3s.但是,可以在3s中满足条件。如果您等到3s,则可以返回一些浪费。目前,您可以调用线程的Interrupt()方法,强迫睡眠方法抛出异常中断并返回激活状态。

  这里的停止线程是指结尾线程。有以下常见方法

  如果您不理解或不需要交流,可以留言。此外,我希望收集和注意,我将继续更新Java的各种教程!