java面试题网

普通会员

483

帖子

9

回复

187

积分

楼主
发表于 2018-03-21 18:48:35 | 查看: 5880| 回复: 2

简述线程的五种状态?

   (1)新建(new):当一个线程处于新建状态时,它仅仅是一个空的线程对象,系统不为它分配资源。Tread t = new Tread(new Runner());

   (2)就绪(Runable):此时线程处在随时可以运行的状态,在随后的任意时刻,都可能进入运行状态。t.star( );

   (3)运行(Running):处于这个状态的线程占用CPU,执行程序代码。

   (4)阻塞(Blocked):阻塞状态是指线程因为某些原因放弃CPU,暂时停止运行,直到线程重新进入就绪状态。wait、sleep、同步锁被占用;

   (5)死亡(Dead):当线程退出run()方法时,就进入死亡状态,该线程生命周期结束。可能正常执行完run()方法退出,也可能是遇到异常。



文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/53_1_1.html


java面试题交流群:327440556

普通会员

483

帖子

9

回复

187

积分
沙发
发表于 2018-11-01 17:13:31

线程的几种可用状态

线程可以处于以下几种状态:

  • 就绪(Runnable):线程准备运行,不一定立马就能开始执行。

  • 运行中(Running):程序正在执行线程的代码。

  • 等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。

  • 睡眠中(Sleeping):线程被强制睡眠。

  • I/O阻塞(Blocked on I/O):等待I/O操作完成。

  • 同步阻塞(Blocked on Synchronization):等待获取锁。

  • 死亡(Dead):线程完成了执行。

普通会员

217

帖子

75

回复

160

积分
板凳
发表于 2019-05-05 14:15:53
Java线程的几种状态

线程是一个动态执行的过程,它有一个从产生到死亡的过程,共五种状态:

新建(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面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018