ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【多线程】观测线程状态 getState()

2022-03-27 00:23:44  阅读:161  来源: 互联网

标签:状态 getState Thread 多线程 state WAITING 线程 TIMED 观测线


观测线程状态 getState()

Thread.State(查看JDK帮助文档)

  • 线程状态。线程可以处于以下状态之一:

    • [NEW]
      尚未启动的线程处于此状态。
    • [RUNNABLE]
      在Java虚拟机中执行的线程处于此状态。
    • [BLOCKED]
      被阻塞等待监视器锁定的线程处于此状态。
    • [WAITING]
      正在等待另一个线程执行特定动作的线程处于此状态。
    • [TIMED_WAITING]
      正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。
    • [TERMINATED]
      已退出的线程处于此状态。

    一个线程可以在给定时间点处于一个状态。 这些状态是不反映任何操作系统线程状态的虚拟机状态。

代码示例:

/**
 * @Description 观察测试线程的状态
 * @Author hzx
 * @Date 2022-03-26
 */
public class TestState {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(()->{
            for (int i = 0; i < 5; i++) {
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("========线程执行结束========");
        });

        //观察状态
        Thread.State state = thread.getState();
        System.out.println(state); //NEW 创建状态

        //观察启动后
        thread.start(); //启动线程
        state = thread.getState();
        System.out.println(state); //RUNNABLE 运行状态

        while (state != Thread.State.TERMINATED) {
            Thread.sleep(100);
            state = thread.getState(); //更新线程状态 (TIMED_WAITING-阻塞状态,TERMINATED-终止状态)
            System.out.println(state); //输出状态
        }

        //线程死亡后,再次启动会报错(死亡的线程不能再次启动)
//        thread.start();

    }
}

执行结果:

NEW
RUNNABLE
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
========线程执行结束========
TERMINATED

线程死亡后,再次启动报错效果:

标签:状态,getState,Thread,多线程,state,WAITING,线程,TIMED,观测线
来源: https://www.cnblogs.com/hzxll/p/16061642.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有