问题可能是main结束时memDaemon也会被结束,这样应该可以
public MemoryDaemon() {
super();
setDaemon(true);//设为后台线程,main结束也不结束
}最好在while里等待以下,比如说0.1秒
Thread.sleep(100);

解决方案 »

  1.   

    memDaemon.setDaemon(true);
    把这一行去掉。
    Daemon线程区别一般线程之处是:主程序一旦结束,Daemon线程就会结束。
    public final void setDaemon(boolean on)Marks this thread as either a daemon thread or a user thread. The Java Virtual Machine exits when the only threads running are all daemon threads. 你把memDaemon设置为daemon线程了,也就是说主程序退出的时候线程自动也结束了。
    你没看到打印出任何Memory used = XXXXXXXXX是因为你的机器不太好,没等线程初始化完开始跑的时候主程序就已经退出了,呵呵。
    在我的机器上运行是可以看到随机行的Memory used = XXXXXXXXX
      

  2.   

    考,弄反了,那就
    memDaemon.setDaemon(false);
    如果是如icewolf_li(冰狼) 所说:
    你没看到打印出任何Memory used = XXXXXXXXX是因为你的机器不太好,没等线程初始化完开始跑的时候主程序就已经退出了,呵呵。那就在main最后等待
    Thread.sleep(1000);