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
posted @ 2018-09-09 13:37  borter  阅读(1846)  评论(0编辑  收藏  举报