如何在 Java 中延遲幾秒鐘的時間
Mohammad Irfan
2023年1月30日
2020年10月15日
-
在 Java 中使用
Thread.sleep()
方法制造延遲 -
在 Java 中使用
TimeUnit.sleep()
方法進行延遲 -
在 Java 中使用
ScheduledExecutorService
進行延遲 -
在 Java 中使用
ScheduledExecutorService
進行延遲
本教程介紹瞭如何在 Java 中製造程式延時,並列舉了一些示例程式碼來了解它。
製造延時有幾種方法,比如 TimeUnit.sleep()
、ScheduleAtFixedRate()
、Thread.sleep()
等方法。我們來看看例子。
在 Java 中使用 Thread.sleep()
方法制造延遲
Thread
是一個 Java 類,用於建立和併發執行任務,並提供了一個 sleep()
方法來暫停當前執行一段時間。
public class SimpleTesting {
public static void main(String[] args) {
try {
for (int i = 0; i < 2; i++) {
Thread.sleep(1000);
System.out.println("Sleep "+i);
}
}catch(Exception e) {
System.out.println(e);
}
}
}
輸出:
Sleep 0
Sleep 1
在 Java 中使用 TimeUnit.sleep()
方法進行延遲
在這個例子中,我們使用了 TimeUnit
類的 sleep()
方法,用來對指定的時間進行執行延遲。TimeUnit
類屬於 Java 中的一個併發 API 包。
import java.util.concurrent.TimeUnit;
public class SimpleTesting {
public static void main(String[] args) {
try {
for (int i = 0; i < 2; i++) {
TimeUnit.SECONDS.sleep(2);
System.out.println("Sleep "+i);
}
}catch(Exception e) {
System.out.println(e);
}
}
}
輸出:
Sleep 0
Sleep 1
在 Java 中使用 ScheduledExecutorService
進行延遲
Java 提供了一個類 ScheduledExecutorService
來排程併發環境下的執行。我們可以使用它裡面的 run()
方法來執行單獨的執行路徑。請看下面的例子。
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Main
{
public static void main(String args[])
{
try {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
executeTask();
}
}, 0, 1, TimeUnit.SECONDS);
}catch(Exception e) {
System.out.println(e);
}
}
private static void executeTask() {
System.out.println("Task Executing... ");
}
}
輸出:
Task Executing...
Task Executing...
Task Executing...
在 Java 中使用 ScheduledExecutorService
進行延遲
如果你使用的是 Java 9 或更高版本,你可以使用方法引用的概念,在 scheduleAtFixedRate()
方法內部呼叫方法。請看下面的例子。
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class SimpleTesting {
public static void main(String[] args) {
try {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(SimpleTesting::executeTask, 1, 2, TimeUnit.SECONDS);
}catch(Exception e) {
System.out.println(e);
}
}
private static void executeTask() {
System.out.println("Task Executing... ");
}
}
輸出:
Task Executing...
Task Executing...
Task Executing...