美文网首页
线程中断的注意事项

线程中断的注意事项

作者: WaterYuan | 来源:发表于2020-02-26 17:10 被阅读0次
0x01、线程有着明确的6个状态(java.lang.Thread.State):

NEW,
RUNNABLE ,
BLOCKED,
WAITING ,
TIMED_WAITING ,
TERMINATED 。

0x02、谁受中断标志的影响?

BLOCKED状态一般是因为synchronized等无法获取锁导致线程被阻塞,
当线程处于BLOCKED状态时,执行其interrupt方法不会抛异常,只会设置其中断标志位为true,线程仍会继续运行

当线程处于 WAITING 和 TIMED_WAITING 时,线程才会自动检测中断标志位,当中断标记为true产生InterruptedException。
线程的WAITING 和 TIMED_WAITING状态一般是由 wait, sleep, join 这3个方法引起的。

0x03、谁会检测中断标志位?
  • 一个是用户自己通过isInterrupt()去检测
  • 一个是WAITING 和 TIMED_WAITING 里线程自动检测
  • 阻塞状态,线程是不会自动检测中断标志位的
0x04、线程的interrupt()方法先被调用,后进入等待状态,还会抛出InterruptedException异常吗?

会,因为等待状态会自动检测中断标志位

0x05、线程捕获InterruptedException异常后,再进入等待状态,还会再次抛出InterruptedException异常吗?

不会,因为InterruptedException已清空中断标志位


一文搞懂 Java 线程中断
Java 线程中断机制整理
如何"优雅"地终止一个线程?
如何优雅的关闭Java线程池

相关文章

  • 线程中断的注意事项

    0x01、线程有着明确的6个状态(java.lang.Thread.State): NEW,RUNNABLE ,B...

  • 泥瓦匠聊并发编程基础篇:线程中断和终止

    1 线程中断 1.1 什么是线程中断? 线程中断是线程的标志位属性。而不是真正终止线程,和线程的状态无关。线程中断...

  • 阿里P8聊并发编程:线程中断和终止

    一、线程中断 1.什么是线程中断? 线程中断是线程的标志位属性。而不是真正终止线程,和线程的状态无关。线程中断过程...

  • 【多线程】——3.线程的中断

    线程中断的概念 java线程中断是一种协作机制 通过中断并不能直接终止线程的运行 需要被中断的线程自己处理中断 (...

  • Java并发编程基础-理解中断

    章节 什么是中断 中断线程的方法 线程中断状态的判断以及何时被中断的线程所处 isInterrupted() 状态...

  • Java线程及多线程相关

    多线程 中断 每个线程都有一个boolean类型的中断状态。当在另一个线程中断该线程时,这个线程的中断状态将被设置...

  • 7 什么是线程中断

    线程中断 线程中断指的是线程的一种状态,中断不是自发产生的,而是其它线程发出的一种指令.本线程通过判断是否接收中断...

  • 线程中断

    什么是线程中断?线程中断即线程运行过程中被其他线程打断了。 线程中断的重要方法2.1 java.lang.Thre...

  • 8.3 线程控制

    线程中断 方法:void interrupt():中断线程(本质没有中断操作,只是给线程对象加了个标记,设置其中断...

  • (4)线程中断

    什么是线程中断 java中的线程中断并不是指强制线程中断执行,而是指调用线程中断起到一个通知作用,让线程知道自己被...

网友评论

      本文标题:线程中断的注意事项

      本文链接:https://www.haomeiwen.com/subject/lvsbchtx.html