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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值