2021-04-18 15:53  阅读(104)
文章分类:Java 基础实战 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-examples.html

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

    /*
     author by w3cschool.cn
     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
    ……
    
点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 实例 – 状态监测
上一篇
Java 实例 – 查看端口是否已使用
下一篇
Java 实例 – 获取远程文件大小