java线程状态监控重启_如何监控线程的状态?(How to monitor a thread's status?)

如何监控线程的状态?(How to monitor a thread's status?)

问题描述 (Problem Description)

如何监控线程的状态?

解决方案 (Solution)

下面的示例演示如何通过扩展Thread类和使用currentThread.getName()方法来监视线程的状态。class MyThread extends Thread {

boolean waiting = true;

boolean ready = false;

MyThread() {

}

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 new_class {

public static void main(String args[]) throws Exception {

MyThread thrd = new MyThread();

thrd.setName("MyThread #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() );

}

}

结果 (Result)

上面的代码示例将产生以下结果。main Alive=true State:=running

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页