每X秒打印一下“hello world”

最近我一直在使用大数字的循环来打印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秒?

你也可以看一下TimerTimerTask类,你可以使用它们来安排你的任务每n秒运行一次。

您需要一个扩展TimerTask的类并重写public void run()方法,每当您将该类的一个实例传递给timer.schedule()方法时,该方法将被执行。

下面是一个例子,每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

代码:

 Runnable helloRunnable = new Runnable() { public void run() { System.out.println("Hello world"); } }; ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); executor.scheduleAtFixedRate(helloRunnable, 0, 3, TimeUnit.SECONDS); 

尝试这样做:

 Timer t = new Timer(); t.schedule(new TimerTask() { @Override public void run() { System.out.println("Hello World"); } }, 0, 5000); 

该代码将每5000毫秒( 5秒)运行一次打印以控制Hello World 。 有关更多信息,请阅读https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html

使用Thread.sleep(3000)内部循环

我用计时器解决它,希望它有帮助。 我使用了来自同一个包java.util.TimerTimerTask的定时器。 见下文:

 TimerTask task = new TimerTask() { @Override public void run() { System.out.println("Hello World"); } }; Timer timer = new Timer(); timer.schedule(task, new Date(), 3000); 

最简单的方法是设置主线程睡眠3000毫秒(3秒):

 for(int i = 0; i< 10; i++) { try { //sending the actual Thread of execution to sleep X milliseconds Thread.sleep(3000); } catch(InterruptedException ie) {} System.out.println("Hello world!"): } 

这将使线程停止至lessX毫秒。 线程可能会睡更多的时间,但是这取决于JVM。 唯一保证的是线程将至less睡眠毫秒。 看一下Thread#sleep doc:

使当前正在执行的线程hibernate(暂时停止执行)达指定的毫秒数,这取决于系统定时器和调度程序的精度和准确性

使用java.util.TimerTimer#schedule(TimerTask,delay,period)方法将会对你有所帮助。

 public class RemindTask extends TimerTask { public void run() { System.out.println(" Hello World!"); } public static void main(String[] args){ Timer timer = new Timer(); timer.schedule(new RemindTask(), 3000,3000); } } 

他说什么 你可以处理exception,但Thread.sleep(毫秒); 是最好的路线。

 public static void main(String[] args) throws InterruptedException { 

这是在java中使用线程的简单方法:

 for(int i = 0; i< 10; i++) { try { //sending the actual Thread of execution to sleep X milliseconds Thread.sleep(3000); } catch(Exception e) { System.out.println("Exception : "+e.getMessage()); } System.out.println("Hello world!"); } 

这是使用Thread构造函数中的Runnable接口的另一种简单方法

 public class Demo { public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { @Override public void run() { for(int i = 0; i < 5; i++){ try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Thread T1 : "+i); } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { for(int i = 0; i < 5; i++) { try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Thread T2 : "+i); } } }); Thread t3 = new Thread(new Runnable() { @Override public void run() { for(int i = 0; i < 5; i++){ try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("Thread T3 : "+i); } } }); t1.start(); t2.start(); t3.start(); } } 
 public class HelloWorld extends TimerTask{ public void run() { System.out.println("Hello World"); } } public class PrintHelloWorld { public static void main(String[] args) { Timer timer = new Timer(); timer.schedule(new HelloWorld(), 0, 5000); while (true) { try { Thread.sleep(2000); } catch (InterruptedException e) { System.out.println("InterruptedException Exception" + e.getMessage()); } } } } 

创build无限循环广告调度程序任务已configuration。

添加Thread.sleep

 try { Thread.sleep(3000); } catch(InterruptedException ie) {} 

对于小型应用程序,可以使用Timer和TimerTask,但是在Web应用程序中,我将使用Quartz Scheduler来调度作业并执行这样的周期性作业。

查看Quartz调度的教程 。

 public class TimeDelay{ public static void main(String args[]) { try { while (true) { System.out.println(new String("Hello world")); Thread.sleep(3 * 1000); // every 3 seconds } } catch (InterruptedException e) { e.printStackTrace(); } } }