• Java如何监视线程的状态?


    在Java编程中,如何监视线程的状态?

    以下示例演示如何通过扩展Thread类并使用currentThread.getName()方法来监视线程的状态。

    package com.yiibai;
    
    class MyThread2 extends Thread {
        boolean waiting = true;
        boolean ready = false;
    
        MyThread2() {
        }
    
        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 MonitoringThread {
        public static void main(String args[]) throws Exception {
            MyThread2 thrd = new MyThread2();
            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());
        }
    }
    
    Java

    上述代码示例将产生以下结果 -

    alive
    alive
    alive
    alive
    alive
    .............  省略了一大波数据 ...............
    alive
    alive
    MyThread #1 terminating.
    alive
    alive
    alive
    alive
    alive
    alive
    alive
    MyThread #1  Alive:=false State:=TERMINATED
  • 相关阅读:
    Android -- 桌面悬浮,仿360
    android 定时短信app之时间选择器(一)
    如何在Android中为TextView动态设置drawableLeft等
    装饰器3(装饰函数带参数)
    装饰器2(被装饰函数自带参数)
    装饰器1(被装饰函数不带参数)
    工资管理系统(初级实现)
    购物车程序
    python中read、readline、readlines之间的区别
    深复制与浅复制的区别
  • 原文地址:https://www.cnblogs.com/borter/p/9613439.html
Copyright © 2020-2023  润新知