m.run();要在一个新的线程中执行,不然主线程阻塞,那么下面的方法也就没法执行了
 MonitoringTimer m=new MonitoringTimer();
        m.run();

解决方案 »

  1.   


    public class MonitoringTimer extends Thread { public MonitoringTimer() {
    this.start();
    } public volatile boolean flag = false; public boolean getFlag() {
    return this.flag;
    } public void setFlag(boolean flag) {
    this.flag = flag;
    } public void run() {
    this.setFlag(true);
    while (flag) {
    System.out.println("a");
    try {
    Thread.sleep(3000);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    } public void stopMonitor() {
    this.setFlag(false);
    } public static void main(String[] args) throws InterruptedException {
    MonitoringTimer m = new MonitoringTimer(); Thread.sleep(10000); // 主线程调用关闭方法
    m.stopMonitor(); }}
      

  2.   

    m.run();要在一个新的线程中执行,不然主线程阻塞,那么下面的方法也就没法执行了
     MonitoringTimer m=new MonitoringTimer();
            m.run();