线程的生命周期?

线程的生命周期?

线程的生命周期分为五个部分:新建状态、就绪状态、运行状态、阻塞状态、死亡状态。

在这里插入图片描述

新建状态(new):指新建了一个线程对象。比如 Thread t= new Thread( ); 这就是新建了一个Thread类的线程对象。

就绪状态(ready):当线程对象创建后,该线程对象自身或其他对象调用了该对象的start() 方法。该线程就位于可运行池中,变得可运行,等待获取cpu的使用权。因为同一时间里CPU只执行某一个线程。

运行状态(Running):当就绪状态的线程获取了CPU的时间片或者说获取了CPU的执行时间,这就调用该线程的run()方法,然后进入到运行状态。只有处于就绪状态的线程才能进入运行状态。

阻塞状态(Blocked):一个正在执行的线程在一些情况下,如执行耗时的输入输出操作时,会放弃CPU的使用权,进入阻塞状态。线程进入阻塞状态后,不能再排队队列,必须消除阻塞,才可以进入就绪状态。不能直接进入运行状态,即结束阻塞的线程需要重新进入运行池,等待系统的调度。
进入阻塞状态的几种情况
————当线程试图获取某个对象的同步锁时,如果该锁被其他线程所使用,则该线程会进入阻塞状态。想消除此状态,必须获得到其他线程所持有的锁。
————当线程调用一个阻塞试的IO方法时。想进入就绪状态,必须等到这个阻塞的IO的方法返回。
————当线程调用了某个对象的wait()方法时。notify()方法唤醒。
————调用了Thread.sleep(long millis)方法时。休眠状态自动进入阻塞状态。
————一个线程调用另一个线程join()方法时。等待加入的线程运行结束后会结束阻塞状态。

死亡状态(Dead):当线程执行完或者异常退出了run()的执行,则该线程的生命周期就结束了

参考:(https://blog.csdn.net/evankaka/article/details/44153709#t3)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值