package test; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Timer;... ...
package test; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Timer; public class TimerTest { public static void main(String[] args){ long now = System.currentTimeMillis(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 設置日期格式 System.out.println("當前系統時間:" + df.format(new Date()));// new Date()為獲取當前系統時間 System.out.println("當前系統時間2: " + transferLongToDate("yyyy-MM-dd HH:mm:ss", now)); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 9); calendar.set(Calendar.MINUTE, 55); calendar.set(Calendar.SECOND, 0); long specTime = calendar.getTimeInMillis();
//方法一: 使用線程的sleep方法,讓線程休眠來達到按時執行的效果 MyThread thread = new MyThread(); try { Thread.sleep(specTime - now); thread.start(); } catch (InterruptedException e) { e.printStackTrace(); }
//方法二: 使用timer.schedule來實現定時執行線程,參數按如下方法執行即可 /*Timer timer = new Timer(); timer.schedule(new MyTask(), specTime - now, 2000);//在1秒後執行此任務,每次間隔2秒執行一次,如果傳遞一個Data參數,就可以在某個固定的時間執行這個任務. */ } // 使用內部類,來實現線程執行後,每隔兩秒繼續執行一次 static class MyThread extends Thread{ public void run(){ System.out.println("________"); MyThread thread = new MyThread(); try { Thread.sleep(2000); thread.start(); } catch (InterruptedException e) { e.printStackTrace(); } } } //使用內部類,利用TimerTask來實現線程的定時執行 static class MyTimerTask extends java.util.TimerTask{ public void run(){ System.out.println("________"); } } /** * 把毫秒轉化成日期 * @param dateFormat(日期格式,例如:MM/ dd/yyyy HH:mm:ss) * @param millSec(毫秒數) * @return */ public static String transferLongToDate ( String dateFormat, long millSec ) { SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); Date date = new Date(millSec); return sdf.format(date); } }