Java线程的状态以及不同状态下线程中断机制的效果

阅读这篇文章,你将会了解
1.Java线程有什么状态,以及状态扭转的方式
2.Java线程的中断对于各个状态的Java线程有什么效果。

一.Java线程的状态:

  1. 线程的中断不属于线程的状态,中断是一种操作,当用户不希望某个线程继续执行时,可以通过中断机制去完成这个事情。但是,Java线程的中断对于各个状态的Java线程有不一样的效果。
  2. Java线程有6个状态,可以进入源码Thread.java查看。
状态 拥有cpu执行时间 描述
NEW 创建新线程,还未启动时
RUNNABLE RUNNING:有
READY:无
运行状态,实质上包括了传统线程中的2个状态
(1)RUNNING:运行中
(2)READY:就绪,等待资源(例如cpu时间片)
BLOCKED 阻塞,线程在等待monitor lock(监视器锁)
WAITING 等待,直到被唤醒
TIMED_WAITING 超时等待,达到一定时间后会自动唤醒
TERMINATED 终止,线程已经执行完毕

二.Java线程的状态扭转


图片来源:https://blog.csdn.net/pange1991/article/details/53860651/

三.Java线程的中断

1. 线程中断的方法

方法名 描述
public boolean isInterrupted() 返回是否中断,不做其他事情
public void interrupt() 设置中断标志位
public static boolean interrupted() 返回中断标志位,并清除中断标志位

2. Java线程不同状态下中断机制的效果

状态 中断效果 描述
NEW
RUNNABLE 设置中断标志位 用户自己判断是否中断,以及如何处理
BLOCKED 设置中断标志位 用户自己判断是否中断,以及如何处理
WAITING 抛InterruptedException异常,并清空中断标志位
TIMED_WAITING 抛InterruptedException异常,并清空中断标志位
TERMINATED

你可能感兴趣的:(并发,java,thread)