JAVA中的定時器 Timer
阿新 • • 發佈:2022-05-13
建立定時器物件:
Timer timer = new Timer();
定時執行任務:
只執行一次:
timer.schedule(TimerTask task, long delay) // 延遲 delay(毫秒)後執行一次 task ;
timer.schedule(TimerTask task, Date time) // 指定時間 time 執行一次 task;
重複執行:
timer.schedule(TimerTask task, long delay, long period) // 延遲 delay(毫秒)後首次執行 task,間隔 period 重複執行 task;
timer.schedule(TimerTask task, Date firstTime, long period) //指定 firstTime 首次執行 task, 間隔period 重複執行 task;
例子:
/** * 指定定時器延遲 delay 後執行任務(只執行一次) */ public static void timer1(){ Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { System.out.println("當前時間: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1)); } }, 1000); } /** * 指定某個時間執行定時器(之執行一次),對於一過去的時間立即執行 */ public static void timer2(){ new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("當前時是: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1)); } }, DateUtils.strToDate("2022-03-13 09:54:20")); } /** * 延遲 delay 時間後執行,間隔 period 重複執行 */ public static void timer3(){ new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("當前時間是: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1)); } },0, 1000); } /** * 設定首次執行時間,間隔 period 重複執行(首次時間已經過去立即執行) */ public static void timer4(){ new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("當前時間是: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1)); } }, DateUtils.strToDate("2022-05-13 10:10:30"), 1000); }
時間工具類:
public class DateUtils { public static String sdf_str1 = "yyyy-MM-dd HH:mm:ss"; public static String sdf_str2 = "yyyy-MM-dd"; public static String sdf_str3 = "HH:mm:ss"; private static SimpleDateFormat SDF = new SimpleDateFormat(sdf_str1); /** * 自定義時間轉換成字串 * @param date * @param formate * @return */ public static String dateToStr(Date date, String formate){ SimpleDateFormat sdf = new SimpleDateFormat(formate); return sdf.format(date); } public static Date strToDate(String str){ try { return SDF.parse(str); } catch (ParseException e) { // e.printStackTrace(); System.err.println("時間轉換失敗: " + e.getMessage()); } return null; } }