我想打印这一行:
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());
}
}
答案 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.timer
和ScheduledExecutorService
ScheduledThreadPoolExecutor 对系统时钟的更改不敏感,但计时器是。
计时器只有一个执行线程,因此长时间运行的任务可以延迟其他任务。 ScheduledThreadPoolExecutor 可配置任意数量的线程
答案 2 :(得分:-1)
通过使用以下代码,您可以在每秒后打印想要的
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(Runtime.getRuntime().freeMemory());
}
}, 0, 1000);
}