共計 1875 個字符,預計需要花費 5 分鐘才能閱讀完成。
在 Java 中設置每天固定時間可以使用 Java 的定時任務工具類,如 Timer 和 ScheduledExecutorService。
使用 Timer 類可以在指定時間執(zhí)行某個任務。以下是一個示例代碼:
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class DailyTask {public static void main(String[] args) {// 創(chuàng)建一個 Timer 實例
Timer timer = new Timer();
// 獲取當前時間
Calendar currentTime = Calendar.getInstance();
currentTime.setTime(new Date());
// 設置每天固定時間的小時和分鐘
int hour = 9;
int minute = 0;
// 設置任務執(zhí)行時間
Calendar scheduledTime = Calendar.getInstance();
scheduledTime.set(Calendar.HOUR_OF_DAY, hour);
scheduledTime.set(Calendar.MINUTE, minute);
scheduledTime.set(Calendar.SECOND, 0);
// 如果當前時間已經(jīng)超過了設定的時間,則將執(zhí)行時間設置為明天的同一時間
if (currentTime.after(scheduledTime)) {scheduledTime.add(Calendar.DATE, 1);
}
// 計算任務首次執(zhí)行的延遲時間
long delay = scheduledTime.getTimeInMillis() - currentTime.getTimeInMillis();
// 創(chuàng)建一個定時任務
TimerTask task = new TimerTask() {@Override
public void run() {// 在這里定義每天固定時間要執(zhí)行的任務
System.out.println(" 任務執(zhí)行時間:" + new Date());
}
};
// 啟動定時任務
timer.schedule(task, delay, 24 * 60 * 60 * 1000);
}
}
使用 ScheduledExecutorService 類也可以實現(xiàn)每天固定時間的任務調(diào)度。以下是一個示例代碼:
import java.time.LocalTime;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class DailyTask {public static void main(String[] args) {// 創(chuàng)建一個 ScheduledExecutorService 實例
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
// 設置每天固定時間的小時和分鐘
int hour = 9;
int minute = 0;
// 獲取當前時間
LocalTime currentTime = LocalTime.now();
// 計算任務首次執(zhí)行的延遲時間
long initialDelay = LocalTime.of(hour, minute).toSecondOfDay() - currentTime.toSecondOfDay();
if (initialDelay < 0) {initialDelay += 24 * 60 * 60; // 添加一天的秒數(shù)
}
// 創(chuàng)建一個定時任務
Runnable task = () -> {// 在這里定義每天固定時間要執(zhí)行的任務
System.out.println(" 任務執(zhí)行時間:" + LocalTime.now());
};
// 啟動定時任務
scheduler.scheduleAtFixedRate(task, initialDelay, 24 * 60 * 60, TimeUnit.SECONDS);
}
}
上述代碼中,使用 LocalTime 類來表示時間,計算任務首次執(zhí)行的延遲時間,以及在任務中獲取當前時間。使用 ScheduledExecutorService 的 scheduleAtFixedRate 方法來啟動定時任務,并指定任務的首次執(zhí)行延遲時間和執(zhí)行周期。
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!
正文完