<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java世界

    學習筆記

    常用鏈接

    統計

    積分與排名

    天籟村

    新華網

    雅虎

    最新評論

    Timer和TimerTask【轉載】

    有時候需要每隔一段時間去執行某個任務,在Java中提供了Timer和TimerTask來完成這個任務,這個兩個類位于java.util包中。Timer類是Java中一種線程設施,用于安排以后在后臺線程中執行的任務,可以安排任務執行一次或定期重復執行。與每個Timer對象對應的是單個后臺線程,用于順序的執行所有計時器任務。

          對Timer對象最后的引用完成后,并且所有未處理的任務都已執行完畢后,計時器的任務執行線程會正常終止,并且成為垃圾回收的對象。但是這可能要很長時間后才能發生。默認情況下,任務執行線程并不作為守護線程來運行,所以它能夠阻止應用程序終止。如果調用者想要快速終止計時器的任務執行線程,那么請調用計時器的cancel方法。

          TimerTask對象由Timer安排為一次執行或重復執行的任務,也就是說,Timer負責計時,具體的任務由TimerTask來完成。

          以下用兩段程序來說明它們的用法。

     

    Example1:LOGO閃屏

         在游戲中,當游戲開始之前,會顯示一些Logo圖片,在顯示Logo圖片的同時,進行資源文件的加載。這種情形可以利用Timer來進行圖片的切換工作,先看看派生自TimerTask的具體的任務完成類EventTimerTask類源代碼:

    代碼
    import java.util.Timer;
    import java.util.TimerTask;

    class EventTimerTask extends TimerTask{   
        
    private int imageNum;
        
    private int imageCur = 0;   
        
    private Timer timer;   
        
        
    public void run(){   
            
    //判斷當前顯示的圖片序號   
            if(++imageCur<=imageNum){   
                System.out.println(
    "當前屏幕上顯示的是第" + imageCur + "張圖片");   
            }
    else{   
                timer.cancel();   
                System.out.println(
    "游戲資源加載完畢,開始進入游戲");   
            }   
        }    

        
    public void setImageNum(int imageNum){   
            
    this.imageNum = imageNum;   
        }   
          
        
    public void setTimer(Timer timer){   
            
    this.timer = timer;   
        }  
    }   

     

     

    接下來是類ReadLogo代碼:


     

    代碼
    import java.util.Timer;   
    import java.util.TimerTask;   
      
    public class ReadLogo{   
        
    private Timer timer = new Timer();   
        
    private EventTimerTask timerTask = new EventTimerTask();   
        
    private int imageNum = 10;   
        
    private int delay = 1;   
        
    private int second = 2;   
        
        
    public void startTimerTask(){   
            timerTask.setTimer(timer);   
            timerTask.setImageNum(imageNum); 
            timer.schedule(timerTask, delay
    *1000, second*1000);   
            System.out.println(
    "加載其它游戲資源......");   
        }   
        
        
    public static void main(String[] args){   
            ReadLogo rl 
    = new ReadLogo();   
            rl.startTimerTask();   
        }   
    }
     

     

     

    程序運行結果:

    加載其它游戲資源......
    當前屏幕上顯示的是第1張圖片
    當前屏幕上顯示的是第2張圖片
    當前屏幕上顯示的是第3張圖片
    當前屏幕上顯示的是第4張圖片
    當前屏幕上顯示的是第5張圖片
    當前屏幕上顯示的是第6張圖片
    當前屏幕上顯示的是第7張圖片
    當前屏幕上顯示的是第8張圖片
    當前屏幕上顯示的是第9張圖片
    當前屏幕上顯示的是第10張圖片
    游戲資源加載完畢,開始進入游戲

     

     

     

    Example2:煮雞蛋計時程序

     

    代碼
    import java.util.Timer;
    import java.util.TimerTask;

    public class EggTask extends TimerTask {
        
    private Timer timer;
        
    public EggTask(Timer timer){
            
    this.timer = timer;
        }
        
        
    public void run(){
            playSound();
            timer.cancel();
        }
        
        
    private void playSound(){
            System.out.println(
    "雞蛋煮好了,播放聲音!~~~");
        }
    }

     

     

     

    代碼
    public class EggTimer {
        
    private final Timer timer = new Timer();
        
    private final int minutes;
        
    public EggTimer(int minutes){
            
    this.minutes = minutes;
        }
        
        
    public void start(){
            EggTask et 
    = new EggTask(timer);
            
    //將任務和計時器關聯在一起。第一個參數是要執行的任務
            
    //第二個參數是執行任務前的延遲時間,單位是毫秒
            timer.schedule(et, minutes*60*1000);
        }
        
        
    public static void main(String[] args){
            
    final int minutes = 2;
            System.out.println(
    "煮雞蛋計時器開始記時,"+minutes+"分鐘后雞蛋煮熟會播放聲音!");
            
            EggTimer eggTimer 
    = new EggTimer(minutes);
            eggTimer.start();
        }
    }
     

     


    程序運行結果:

    煮雞蛋計時器開始記時,2分鐘后雞蛋煮熟會播放聲音!
    雞蛋煮好了,播放聲音!
    ~~~

    posted on 2012-04-10 09:11 Rabbit 閱讀(306) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 奇米影视亚洲春色| 啦啦啦www免费视频| 亚洲情侣偷拍精品| 亚洲A∨精品一区二区三区下载| 最近最好最新2019中文字幕免费| 亚洲中文字幕第一页在线| 国产高潮久久免费观看| 亚洲一区二区高清| CAOPORN国产精品免费视频| 国产亚洲精品免费视频播放| 一级一级毛片免费播放| 亚洲色无码专区在线观看| 中文字幕成人免费高清在线视频| 久久影视国产亚洲| 国产拍拍拍无码视频免费| 亚洲国产香蕉碰碰人人| 亚欧在线精品免费观看一区| 亚洲大尺码专区影院| 一个人免费高清在线观看| 亚洲熟女乱色一区二区三区 | 老司机亚洲精品影视www| 中国在线观看免费的www| 亚洲AV色香蕉一区二区| 99re在线免费视频| 亚洲看片无码在线视频| 国产亚洲福利一区二区免费看| 四虎一区二区成人免费影院网址| 亚洲一区二区三区偷拍女厕 | 在线精品自拍亚洲第一区| 亚洲精品成人在线| 日韩电影免费观看| 亚洲 日韩经典 中文字幕| 亚洲国产a级视频| 99久热只有精品视频免费看| 亚洲情A成黄在线观看动漫软件| 四虎永久在线精品免费影视| 青柠影视在线观看免费高清| 亚洲图片中文字幕| 亚洲精品国产成人影院| 在免费jizzjizz在线播 | 4hu四虎免费影院www|