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

Mohammad Irfan 2023年1月30日 2020年10月15日
  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...