使用定時或固定時間間隔有幾個方法
一個是Thread.sleep();
方法內填延遲的毫秒數就可以讓程式延遲後再執行
另一種就是使用Timer class
這個class的schedule方法有兩個變數以及三個變數
詳細的使用方法請見範例
範例有兩個class,將要執行的程式碼寫在繼承TimerTask的class裡面
然後使用Timer裡面你要用的方法就可以使用定時執行程式的功能了
import java.text.SimpleDateFormat;
import java.text.SimpleDateFormat;
import java.util.*;public class TimerDemo {SimpleDateFormat sdf = new SimpleDateFormat("hh時mm分ss秒 yyyy年MM月dd日");public static void main(String[] args) {TimerDemo timerDemo = new TimerDemo();System.out.println("方法一示範");timerDemo.testScheduleDelay();System.out.println("方法二示範");timerDemo.testScheduleDelayAndPeriod();System.out.println("方法三示範");timerDemo.testScheduleDateAndPeriod();}void testScheduleDelay(){Timer timer = new Timer();System.out.println("延遲時間:3秒");System.out.println("現在時間:" + sdf.format(new Date()));// schedule(TimerTask task, long 延遲時間)timer.schedule(new DateTask(), 3000);try {Thread.sleep(10000);}catch(InterruptedException e) {}timer.cancel();System.out.println("結束時間:"+ sdf.format(new Date()) + "\n");}void testScheduleDelayAndPeriod(){Timer timer = new Timer();System.out.println("延遲時間:3秒, 時間間格:2秒");System.out.println("現在時間:"+ sdf.format(new Date()));// schedule(TimerTask task, long 延遲時間, long 時間間格)timer.schedule(new DateTask(), 3000, 2000);try {Thread.sleep(10000);}catch(InterruptedException e) {}timer.cancel();System.out.println("結束時間:"+ sdf.format(new Date()) + "\n");}void testScheduleDateAndPeriod(){Timer timer = new Timer();// 設定填入schedule中的 Date firstTime 為現在的15秒後Calendar calendar = Calendar.getInstance();calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND)+15);Date firstTime = calendar.getTime();// 也可用 simpleDateFormat 直接設定 firstTime的精確時間// SimpleDateFormat dateFormatter =// new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");// Date firstTime = dateFormatter.parse("2011/12/25 13:30:00");System.out.println("現在時間:"+ sdf.format(new Date()));System.out.println("設定執行 Date 為15秒後:"+ firstTime +", 時間間格:3秒");// schedule(TimerTask task, Date 開始時間, long 時間間格)timer.schedule(new DateTask(), firstTime, 3000);try {Thread.sleep(30000);}catch(InterruptedException e) {}timer.cancel();System.out.println("結束時間:"+ sdf.format(new Date()) + "\n");}}
import java.text.SimpleDateFormat;import java.util.Date;import java.util.TimerTask;//繼承timertask將要執行的動作覆寫在run裡面public class DateTask extends TimerTask {SimpleDateFormat sdf = new SimpleDateFormat("hh時mm分ss秒 yyyy年MM月dd日");private int i=0;@ Overridepublic void run() {i++;System.out.println(i+":"+ sdf.format(new Date()));}}
沒有留言:
張貼留言