如何在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议一个ScheduledExecutorService
和scheduleAtFixedRate
或者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