带线程的java中的计时器

时间:2014-06-17 15:58:23

标签: java multithreading timer

我想打印这一行:

System.out.println(Runtime.getRuntime().freeMemory());

每一秒。怎么做?

public class Hilo implements Runnable{    

    Thread t;
    String nombre;
    public  Hilo() {
         t = new Thread(this,"Hilo1");
         t.start();
    }

    @Override
    public void run() {
        System.out.println(Runtime.getRuntime().freeMemory());
    }
}

3 个答案:

答案 0 :(得分:3)

使用java.util.Timer对象。

  

线程的工具,用于在后台线程中安排将来执行的任务。可以将任务安排为一次性执行,或者以固定间隔重复执行。

timer.schedule(new TimerTask() {
    @Override
    public void run() {
        System.out.println(Runtime.getRuntime().freeMemory());
    }
}, 0, 1000);

答案 1 :(得分:1)

另一种方法

ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();

ses.scheduleAtFixedRate(new Runnable() {
    @Override
    public void run() {
        System.out.println(Runtime.getRuntime().freeMemory());
    }
}, 0, 1, TimeUnit.SECONDS);

ses.shutdown();

java.util.timerScheduledExecutorService

之间的差异
  1. ScheduledThreadPoolExecutor 对系统时钟的更改不敏感,但计时器是。

  2. 计时器只有一个执行线程,因此长时间运行的任务可以延迟其他任务。 ScheduledThreadPoolExecutor 可配置任意数量的线程

答案 2 :(得分:-1)

通过使用以下代码,您可以在每秒后打印想要的

        timer.schedule(new TimerTask() {
           @Override
           public void run() {
                System.out.println(Runtime.getRuntime().freeMemory());
               }
              }, 0, 1000);

    }