java面试题网

普通会员

265

帖子

9

回复

179

积分

楼主
发表于 2018-03-23 17:53:35 | 查看: 1128| 回复: 1

新建的线程在它完整的生命周期中,包括新建、就绪、运行、阻塞和死亡5种状态。

(1)新建(new)状态,用new命令建立一个线程后,还没有启动其指定的指令序列,这时的线程状态就是新建状态。

(2)就绪(Runnable)状态,也叫做可运行状态,处于新建状态的线程被启动后即进入了本状态。这时线程正在等待分配CPU资源,一旦获得CPU资源即进入了自动运行状态。

(3)运行(running)状态,线程获得了CPU资源正在线程的指令,此时除非它自动放弃CPU资源或者有更加高优先级的线程进入,否则线程将一直运行到结束。

(4)阻塞(blocked)状态,由于某种原因致使正在运行的线程让出CPU资源暂停自己的执行,即进入阻塞状态,这时只有引起线程堵塞的原因被消除后才能使本线程回到就绪状态。

(5)死亡(dead)状态,处于死亡状态的线程不具备继续运行的能力,死亡的原因有两个:一个是正常的线程完成了它的全部任务后退出,另一种是线程被强制中止,如调用stop( )或destroy( )方法让线程消亡。此时线程不可能再进入就绪状态等待执行。



普通会员

216

帖子

75

回复

160

积分
沙发
发表于 2019-05-05 14:37:40
线程的生命周期

线程是一个动态执行的过程,它也有一个从产生到死亡的过程。

生命周期的五种状态

新建(new Thread)

当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)

例如:Thread t1=new Thread();

就绪(runnable)

线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。例如:t1.start();

运行(running)

线程获得CPU资源正在执行任务(run()方法),此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。

死亡(dead)

当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行。

自然终止:正常运行run()方法后终止

异常终止:调用stop()方法让一个线程终止运行

堵塞(blocked)

由于某种原因导致正在运行的线程让出CPU并暂停自己的执行,即进入堵塞状态。

正在睡眠:用sleep(long t) 方法可使线程进入睡眠方式。一个睡眠着的线程在指定的时间过去可进入就绪状态。

正在等待:调用wait()方法。(调用motify()方法回到就绪状态)

被另一个线程所阻塞:调用suspend()方法。(调用resume()方法恢复)

您需要登录后才可以回帖 登录 | 立即注册

java面试题网无聊看看网与java建站系统提供技术支持V2.1 网站地图 © 2016-2018