在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