Java 实例 – 状态监测 - Break易站

[

Java 实例 - 状态监测

Java 实例
以下实例演示了如何通过继承 Thread 类并使用 currentThread.getName() 方法来监测线程的状态:

Main.java 文件

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 Main {
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());
   }
}

以上代码运行输出结果为:


……

alive

alive

MyThread #1 terminating.

alive

……

Java 实例

]
转载请保留页面地址:https://www.breakyizhan.com/java/23967.html

posted on 2020-07-13 20:32  MrAit  阅读(181)  评论(0编辑  收藏  举报

导航