• Java如何显示线程状态?


    在Java编程中,如何显示线程状态?

    以下示例演示如何使用Thread类的isAlive()getStatus()方法显示线程的不同状态。

    package com.yiibai;
    
    class MyThreads extends Thread {
        boolean waiting = true;
        boolean ready = false;
    
        MyThreads() {
        }
    
        public void run() {
            String thrdName = Thread.currentThread().getName();
            System.out.println(thrdName + " starting.");
    
            while (waiting)
                System.out.println("waiting:" + waiting);
            System.out.println("waiting...");
            startWait();
            try {
                Thread.sleep(1000);
            } catch (Exception exc) {
                System.out.println(thrdName + " interrupted.");
            }
            System.out.println(thrdName + " terminating.");
        }
    
        synchronized void startWait() {
            try {
                while (!ready)
                    wait();
            } catch (InterruptedException exc) {
                System.out.println("wait() interrupted");
            }
        }
    
        synchronized void notice() {
            ready = true;
            notify();
        }
    }
    
    public class DisplayThreadStatus {
        public static void main(String args[]) throws Exception {
            MyThreads thrd = new MyThreads();
            thrd.setName("MyThreads #1");
            showThreadStatus(thrd);
    
            thrd.start();
            Thread.sleep(50);
            showThreadStatus(thrd);
    
            thrd.waiting = false;
            Thread.sleep(50);
            showThreadStatus(thrd);
    
            thrd.notice();
            Thread.sleep(50);
            showThreadStatus(thrd);
    
            while (thrd.isAlive())
                System.out.println("alive");
            showThreadStatus(thrd);
        }
    
        static void showThreadStatus(Thread thrd) {
            System.out.println(thrd.getName() + " Alive:" + thrd.isAlive() + " State:" + thrd.getState());
        }
    }
    
    Java

    上述代码示例将产生以下结果 -

    MyThreads #1 Alive:false State:NEW
    MyThreads #1 starting.
    waiting:true
    waiting:true
    alive
    ....... 省略 ....
    alive
    MyThreads #1 terminating.
    alive
    MyThreads #1 Alive:false State:TERMINATED
  • 相关阅读:
    样式表中!important的用法
    ORA27101: shared memory realm does not exist问题的解决
    重置标识列的当前值
    ASP.NET Oracle数据库使用事务时注意事项
    Oracle中约束的添加方法总结
    HTML段落自动换行的样式设置
    ASP.NET应用程序中的服务器错误
    oracle中的rownum、order by与分页
    position:relative与float的区别
    Moss/Sharepoint 备份或还原时出错的处理(持续更新)
  • 原文地址:https://www.cnblogs.com/borter/p/9613460.html
Copyright © 2020-2023  润新知