栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

sleep()的线程是什么状态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sleep()的线程是什么状态

前两天面试,面试官问我:小伙子,你知道线程有几种状态吗?
呵,这也太简单了吧~ 我自信答道: 五种状态,分别是创建、就绪、运行、阻塞、死亡
面试官笑笑:那你知道调用sleep()之后是什么状态吗?
Emm… 阻塞态?但是sleep()的线程是不会释放锁的呀,就绪态?可人家也不能运行呀…
面试官看着我抓耳挠腮的样子,冷笑道:回去再好好看吧…

其实,Java线程除了以上五种状态,还存在等待(WAITING) 和 超时等待(TIMED_WAITING) 两种状态

等待(WAITING)

处于这种状态的线程不会被分配CPU执行时间,它们要等待被显式地唤醒,否则会处于无限期等待的状态。对应的方法有以下几种

  • Object.wait()
  • Thread.join()
  • LockSupport.park()

如果要进行唤醒,则对应以下几种方法

  • Object.notify()
  • Object.notifyAll()
  • LockSupport.unpark(Thread)
超时等待(TIMED_WAITING)

处于这种状态的线程不会被分配CPU执行时间,不过无须无限期等待被其他线程显示地唤醒,在达到一定时间后它们会自动唤醒,对应方法有以下几种

  • Thread.sleep(long)
  • Object.wait(long)
  • Thread.join(long)
  • LockSupport.parkNanos()
  • LockSupport.parkUntil()
阻塞状态(BLOCKED)

线程等待进入被synchronized关键字修饰的方法或代码块

就绪状态(RUNNABLE)
  • 线程调用start()方法
  • 当前线程sleep()结束,其他线程join()结束,wait()被唤醒
  • 调用yield()方法,释放时间片,回到就绪态
  • 当前线程取得对象锁
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531381.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号