美文网首页
Java的线程状态

Java的线程状态

作者: 雁阵惊寒_zhn | 来源:发表于2020-09-26 23:43 被阅读0次

    Java语言定义了6种线程状态。在任一时刻,某个线程处于且只能处于其中的一种状态。

    • 新建(New):创建后尚未启动的线程。
    • 运行(Runnable):正在执行或者正在等待操作系统分配执行时间的线程。
    • 无限期等待(Waiting):不会被分配处理器执行时间,需要等待被其他线程显式唤醒
    • 限期等待(Timed Waiting):不会被分配处理器执行时间,也不需要等待其他线程唤醒,在一定时间之后会由系统自动唤醒
    • 阻塞(Blocked):等待着获取一个排他锁
    • 结束(Terminated):线程已经结束执行。

    下图是线程6种状态的转换:


    Java线程状态转换

    在普通情况下,线程的生命周期经由\color{red}{红色}箭头线方向执行,经历创建——运行——结束的过程。
    如果执行过程遇到同步锁,在竞争锁失败的情况下,会执行\color{green}{绿色}箭头线方向,线程阻塞去等待同步锁的释放。
    在线程执行中,主动执行了Object的等待/通知函数,或者线程的join方法,会执行\color{black}{黑色}箭头线方向,进入有限等待或者无限等待状态。

    实践中,可以执行jstack命令查看线程状态。

    相关文章

      网友评论

          本文标题:Java的线程状态

          本文链接:https://www.haomeiwen.com/subject/nmefuktx.html