线程状态解释


前言

线程状态分析


提示:以下是本篇文章正文内容,下面案例可供参考

一、线程状态有哪些?

线程的状态在java.lang.Thread.State中有明确定义;

new:尚未启动的线程的线程状态;

Runnble:可运行线程的线程状态,等待CPU调度;

Blocked:线程阻塞等待监视器锁定的线程状态,处于synchronized同步代码块或方法中被阻塞;

Waiting:等待线程的线程状态,不带超时的方式:Object.wait、Thread.jion、LockSupport.part;

Time Waiting:具有指定等待时间的等待线程的线程状态。带超时的方式:Thread.sleep、Object.wait、Thread.join、LockSupport.partNanos、LockSupport.partUntil;

Terminated:终止线程的线程状态,线程正常完成执行或出现异常。

二、线程状态是如何转换的?


三、线程如何中止?

1、stop :中止线程,并且清楚监控器锁的信息,但是可能导致线程安全问题,JDK不建议用。stop不建议使用的主要原因是由于,比如在同步代码块中两个变量自增,但是由于在两个自增变量中间加入stop(),会导致结果不一致。所以不建议使用

2、interrupt:正确中止线程方法,如果目标线程调用wait(),sleep()等方法被阻塞,那么interrupt会生效,该线程的中断被清除,抛出InterruptedException异常。如果目标线程被I/O或者NIO的channel阻塞,I/O操作会被中断或者返回异常。如果以上条件都不满足,则调用interrupt(),实现线程的中断。

3、标志位:正确中止线程的方法,如果程序是循环执行,可以通过标志位的方式来控制线程的中止。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值