close
使用定時或固定時間間隔有幾個方法
一個是Thread.sleep();

方法內填延遲的毫秒數就可以讓程式延遲後再執行

另一種就是使用Timer class
這個class的schedule方法有兩個變數以及三個變數
詳細的使用方法請見範例
範例有兩個class,將要執行的程式碼寫在繼承TimerTask的class裡面
然後使用Timer裡面你要用的方法就可以使用定時執行程式的功能了


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()));


    }


}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Dnight 的頭像
    Dnight

    D奈老師的部落格

    Dnight 發表在 痞客邦 留言(0) 人氣()