前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >终结任务

终结任务

作者头像
JavaEdge
发布2022-11-29 08:56:31
2720
发布2022-11-29 08:56:31
举报
文章被收录于专栏:JavaEdgeJavaEdge

线程状态

  • 新建(new):当线程被创建时,线程会短暂地处于这种状态。此时,线程已经被分配了必需的系统资源并执行了初始化。此刻线程已有资格获得CPU时间,之后调度器将把这个线程转变为可运行或阻塞状态
  • 就绪(Runnable):在此状态下,只要调度器将时间片分配给线程,线程就可以运行。在任意时刻,线程可运行也可不运行.
  • 阻塞(Blocked):线程能够运行,但某个条件阻碍了运行。当线程处此状态时,调度器将忽略该线程,不会分配给其任何的CPU时间。直到重入就绪态,才有可能执行操作
  • 死亡(Dead):处于死亡或终止态的线程将不再是可调度的,并且再也不会再得到CPU时间片,它的任务已结束,不再可运行。任务死亡的通常方式是从run()返回.

进入阻塞状态

可能原因:

  • 调用sleep()使任务进入休眠。此时,线程在指定时间内不会运行
  • 调用了wait()使线程挂起。直到线程得到notify()或notifyAll()消息(或者为JAVA5的juc包下的signal(),signalAll()消息),线程才会进入就绪态
  • 线程在等个某个输入/输出完成
  • 线程试图在某个对象上调用其同步方法,但此时对象锁被另一个线程持有不可用

suspen(),resume()因可能导致死锁被废止,stop()不释放获得的锁,亦被废止

对于处于阻塞状态的线程,必须强制这个线程跳出阻塞状态后,才可以让线程主动地终止

中断

Thread类包含interrupt(),可以用来终止一个被阻塞的线程,此方法将设置线程的中断状态.若此时线程正好处于休眠, 阻塞或者挂起,就会抛出InterruptedException异常,然后中断状态便会被清除

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线程状态
  • 进入阻塞状态
  • 中断
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档