如果要暫停,然後使用java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
睡一秒或
TimeUnit.MINUTES.sleep(1);
睡了一分鐘。
由於這是一個循環,這提出了一個固有的問題 - 漂移。每次你運行代碼,然後睡覺,你將會跑步,比如說,每一秒都會跑步。如果這是一個問題,那麼請不要使用sleep
。當涉及到控制時,sleep
並不是非常靈活。
運行任務每秒或在一週秒鐘後我會強烈推薦ScheduledExecutorService
,要麼scheduleAtFixedRate
或scheduleWithFixedDelay
。
例如,要運行的方法myTask
每秒(爪哇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");
}
而在爪哇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代碼()'。 – Tiny
考慮使用[Timer](http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html) – PeterMmm
等待的目的是什麼?你是否在等待某個事件發生?確保你明白[sleep()](http://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html)方法的作用 – artdanil