如何在 Java 中延遲幾秒鐘的時間

Mohammad Irfan 2023年10月12日
  1. 在 Java 中使用 Thread.sleep() 方法制造延遲
  2. 在 Java 中使用 TimeUnit.sleep() 方法進行延遲
  3. 在 Java 中使用 ScheduledExecutorService 進行延遲
  4. 在 Java 中使用 ScheduledExecutorService 進行延遲
如何在 Java 中延遲幾秒鐘的時間

本教程介紹瞭如何在 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...