二、线程的状态和方法

线程的状态
上面提到了“就绪”这么个概念,那么线程还有哪些状态呢,这些状态之间又有什么联系呢,下面结合图片做详细的解释(java中的线程状态比较简单)。
QQ截图20161209013122.png
  • 创建对象,此时只是在内存中有一个线程对象。
  • 就绪状态,调用start(),此时进度就绪状态,但是此状态并不代表会立即执行,此时只是说明此线程万事具备只欠东风,CPU随时可以调用。
  • 运行状态,此时run方法被执行。
  • 堵塞状态,此时由于某些原因,线程暂停了,线程卡死了。
    以下情况会导致线程的堵塞:
    1、线程调用sleep方法主动放弃所占用的处理器资源
    2、线程调用了堵塞式IO方法,在该方法返回前都会堵塞
    3、线程试图获得一个同步监视器,但该同步监视器正在其他线程所持有(即当前线程所需锁,被其他线程锁持有)。
    4、线程在调用wait方法,处于等待状态
    5、调用suspend方法,线程被挂起。这个方法容易导致死锁,而且已经弃用了。只做了解。
    解除线程堵塞的几种情况,可以使线程重新进入就绪状态:
    1、调用了sleep方法的线程过了指定的时间
    2、调用了阻塞式IO方法已经返回
    3、线程成功取得了锁
    4、线程处于等待状态时,收到了其他线程调用notify/notifyAll通知
    5、处于挂起的线程调用了resume恢复方法(此方法也已经废弃)
  • 终止状态,线程执行完毕或者被强行杀死,此时线程处于中止状态。
 
常用方法
以上五种状态,Thread类中提供了各种方法,可以使得线程在这几种状态中相互转换。具体会导致线程堵塞的方法,上面已经说明。
QQ截图20161209013905.png





转载于:https://www.cnblogs.com/pullein/p/6232089.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值