ScheduledExecutorService是Java提供的一種用于執(zhí)行定時任務(wù)的線程池。使用ScheduledExecutorService可以方便地創(chuàng)建定時任務(wù),并指定任務(wù)的執(zhí)行時間和執(zhí)行頻率。
下面是使用ScheduledExecutorService的簡單示例:
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
這里使用Executors.newScheduledThreadPool(1)
創(chuàng)建了一個具有1個線程的ScheduledExecutorService對象。
Runnable task = new Runnable() {
@Override
public void run() {
// 任務(wù)的具體邏輯代碼
}
};
這里創(chuàng)建了一個Runnable對象,重寫了run()方法,可以在run()方法中編寫需要執(zhí)行的任務(wù)邏輯。
executor.scheduleAtFixedRate(task, initialDelay, period, TimeUnit.SECONDS);
這里使用scheduleAtFixedRate()
方法指定了任務(wù)的執(zhí)行時間和執(zhí)行頻率。參數(shù)initialDelay
表示任務(wù)的初始延遲時間(以秒為單位),參數(shù)period
表示任務(wù)的執(zhí)行間隔時間(以秒為單位)。
executor.shutdown();
在任務(wù)執(zhí)行完畢后,需要調(diào)用shutdown()
方法來關(guān)閉ScheduledExecutorService,釋放資源。
完整示例代碼如下:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorServiceExample {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("Task executed at: " + System.currentTimeMillis());
}
};
// 延遲1秒后開始執(zhí)行任務(wù),之后每隔2秒執(zhí)行一次
executor.scheduleAtFixedRate(task, 1, 2, TimeUnit.SECONDS);
// 等待10秒后關(guān)閉ScheduledExecutorService
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
executor.shutdown();
}
}
這個示例中,任務(wù)將會在延遲1秒后開始執(zhí)行,然后每隔2秒執(zhí)行一次。任務(wù)的具體邏輯是輸出當(dāng)前時間。
通過以上步驟,就可以使用ScheduledExecutorService來執(zhí)行定時任務(wù)了。