多线程.线程状态观测

常量Thread.State来定义

线程五个状态:新生,就绪,运行,阻塞,死亡

RUNNABLE中有两个状态:Ready(准备好了等待CPU调度)和Running(真正的在运行,由CPU调度)

已死亡的线程不能在被启动

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

  • NEW(新生):尚未启动的线程处于此状态

  • RUNNABLE(运行):在JAVA虚拟机中执行的线程处于此状态

  • BLOCKED(阻塞):被阻塞等待监视器锁定的线程处于此状态

  • WAITING(阻塞):正在等待另一个线程执行特定动作的线程处于此状态

  • TIMED_WAITING(阻塞):正在等待另一个线程执行动作到达指定等待时间的线程处于此状态

  • TERMINATED(死亡):已退出的线程处于此状态

复制代码
package oop.state;

//观察测试线程的状态
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(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);//输出状态

        }
    }
}
复制代码

 

posted @   sususyq-  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示