如何在Java中延迟?

我正在尝试在Java中做一些事情,我需要在while循环中等待/延迟一段时间。

while (true) { if (i == 3) { i = 0; } ceva[i].setSelected(true); //need to wait here ceva[i].setSelected(false); //need to wait here i++; } 

我想build立一个步序列器,我是Java的新手。 有什么build议么 ? 谢谢!

如果你想暂停然后使用java.util.concurrent.TimeUnit

 TimeUnit.SECONDS.sleep(1); 

睡一秒钟或

 TimeUnit.MINUTES.sleep(1); 

睡一会儿

由于这是一个循环,这就提出了一个固有的问题 – 漂移。 每次你运行代码,然后睡觉,你将会跑步,每秒钟跑一点点。 如果这是一个问题,那么不要使用sleep

而且, sleep在控制方面不是很灵活。

为了每秒钟运行一个任务或者一秒延迟,我强烈build议一个ScheduledExecutorServicescheduleAtFixedRate或者scheduleWithFixedDelay

例如,要myTask运行方法myTask (Java 8):

 public static void main(String[] args) { final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); executorService.scheduleAtFixedRate(App::myTask, 0, 1, TimeUnit.SECONDS); } private static void myTask() { System.out.println("Running"); } 

而在Java 7中:

 public static void main(String[] args) { final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); executorService.scheduleAtFixedRate(new Runnable() { @Override public void run() { myTask(); } }, 0, 1, TimeUnit.SECONDS); } private static void myTask() { System.out.println("Running"); } 

使用Thread.sleep(1000);

1000是程序暂停的毫秒数。

 try { Thread.sleep(1000); } catch(InterruptedException ex) { Thread.currentThread().interrupt(); } 

您需要使用Thread.sleep()调用。

更多信息在这里: http : //docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html