最近我一直在使用带有大量数字的循环来打印Hello World:
int counter = 0; while(true) { //loop for ~5 seconds for(int i = 0; i < 2147483647 ; i++) { //another loop because it's 2012 and PCs have gotten considerably faster :) for(int j = 0; j < 2147483647 ; j++){ ... } } System.out.println(counter + ". Hello World!"); counter++; }
我知道这是一种非常愚蠢的方法,但是我从未使用过Java中的任何计时器库。一个如何修改以上内容以每3秒打印一次?
你还可以查看Timer和TimerTask类,这些类可用于计划任务每秒钟运行一次n。
Timer
TimerTask
n
你需要一个扩展TimerTask并覆盖该public void run()方法的类,该类将在每次将该类的实例传递给timer.schedule()方法时执行。
public void run()
timer.schedule()
这是一个示例,Hello World每5秒打印一次:-
Hello World
class SayHello extends TimerTask { public void run() { System.out.println("Hello World!"); } } // And From your main() method or any other method Timer timer = new Timer(); timer.schedule(new SayHello(), 0, 5000);
如果要执行定期任务,请使用ScheduledExecutorService。特别是ScheduledExecutorService.scheduleAtFixedRate
ScheduledExecutorService
ScheduledExecutorService.scheduleAtFixedRate
代码:
Runnable helloRunnable = new Runnable() { public void run() { System.out.println("Hello world"); } }; ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); executor.scheduleAtFixedRate(helloRunnable, 0, 3, TimeUnit.SECONDS);