在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.out.println