博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java线程状态转换
阅读量:6239 次
发布时间:2019-06-22

本文共 1139 字,大约阅读时间需要 3 分钟。

hot3.png

来自:

这是一个UML 图的例子, 显示了Java™中的Thread类的线程状态线程生命周期

Java中的线程是一个操作系统的轻量级进程,是计划执行的最小单位。

线程状态是JVM向Java程序报告的Java虚拟机(JVM)状态,它不反映任何操作系统(OS)线程状态。

在任何给定的时间点,Java 5Java 9中的Thread类的实例 可能处于以下线程状态之一:

  • New,
  • Runnable,
  • Timed waiting,
  • Waiting,
  • Blocked,
  • Terminated.

协议状态机示例 -  Java中的线程状态和生命周期。

New: 是已创建但尚未启动的线程的线程状态。

Runnable: 处于Runnable状态的线程正在从JVM的角度执行,但实际上它可能正在等待来自操作系统的某些资源,例如处理器。这种状态可以被认为是一个有两个子状态的复合状态。当线程转换到Runnable状态时,线程首先进入Ready子状态。线程调度决定线程何时可以实际启动Running。Thread.yield()显式推荐线程调度程序暂停当前正在执行的线程以允许其他线程执行。如果线程已经启动并且尚未死亡,线程仍处于活动状态

Timed waiting: 定时等待是等待指定时间的线程状态。线程运行时调用以下方法之一,线程将移至定时等待状态:

  • Thread.sleep(sleeptime)
  • Object.wait(timeout)
  • Thread.join(timeout)
  • LockSupport.parkNanos(timeout)
  • LockSupport.parkUntil(timeout)

Waiting:在没有指定timeout的情况下调用以下方法之一后, 线程将转到waiting等待状态:

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

请注意,处于等待状态的线程无限期等待另一个线程提供等待线程所需的内容。一旦完成,其他线程就可以在线程共享的对象上调用Object.notify()或Object.notifyAll()。

已调用Thread.join()的线程正在等待指定的线程终止。这意味着等待状态可以成为一个复合状态,其状态对应于这些特定条件。

Blocked: 在等待监视器锁定进入同步块或方法(synchronized)或在调用Object.wait()后重新进入同步块或方法时, 线程处于Blocked阻塞状态。

Terminated: 线程完成run()方法的执行后,它将进入Terminated状态。

 

翻译的水平有限,不太明白还可以看第三个回答 

转载于:https://my.oschina.net/zjllovecode/blog/1630725

你可能感兴趣的文章
php cookie
查看>>
linux下redis安装
查看>>
量子通信和大数据最有市场突破前景
查看>>
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
我的友情链接
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
[MicroPython]TurniBit开发板DIY自动窗帘模拟系统
查看>>
从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
查看>>
windows查看端口占用
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
JDBC的事务
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>