观察线程状态

Posted 做个机灵鬼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察线程状态相关的知识,希望对你有一定的参考价值。

线程状态:Thread.State

new: new Thread() 后处于新生状态,尚未启动

Runnable: 在Java虚拟机中执行的线程处于此状态

Blocked: 被阻塞,等待监视器锁定的线程处于此状态

Waiting: 等待另一个线程执行特定动作的线程处于此状态

Time_Waiting: 正在等待另一个线程执行动作达到指定等待时间的线程处于此状态;

Terminated: 退出的线程处于此状态.

//观察线程状态
public class TextState {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(() -> {
            for (int i = 0; i < 5; i++) {
                try {
                    Thread.sleep(1000);
                } 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);//Run
       //观察线程运行起来到结束之前的状态
        while (state!=Thread.State.TERMINATED){//只要线程不停止 就一直输出线程的状态
            Thread.sleep(100);
            state = thread.getState();//更新线程状态
            System.out.println(state);//获得线程状态
}
        //观察线程结束后的状态
        thread.start();//报错,线程结束后不能再启动

    }

}

以上是关于观察线程状态的主要内容,如果未能解决你的问题,请参考以下文章

多线程(三):线程的状态

从第二个片段访问时 ViewModel 数据丢失状态

关于Hystrix超时机制和线程状态的测试观察和个人理解

java设计优化--观察者模式

永远观察实时数据的片段

VSCode自定义代码片段13——Vue的状态大管家