close
使用定時或固定時間間隔有幾個方法
一個是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;
@ Override
public void run() {
i++;
System.out.println(i+":"+ sdf.format(new Date()));
}
}
全站熱搜