一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - JAVA TIMER簡單用法學習

JAVA TIMER簡單用法學習

2019-06-18 11:25腳本之家 Java教程

Timer類是用來執行任務的類,它接受一個TimerTask做參數

Timer有兩種執行任務的模式,最常用的是schedule,它可以以兩種方式執行任務:1:在某個時間(Data),2:在某個固定的時間之后(int delay).這兩種方式都可以指定任務執行的頻率.看個簡單的例子:

復制代碼代碼如下:

import java.io.IOException;
import java.util.Timer;

 

public class TimerTest { 

    public static void main(String[] args){
           Timer timer = new Timer();
        timer.schedule(new MyTask(), 1000, 2000);//在1秒后執行此任務,每次間隔2秒,如果傳遞一個Data參數,就可以在某個固定的時間執行這個任務.
        while(true){//這個是用來停止此任務的,否則就一直循環執行此任務了
            try { 
                int ch = System.in.read();
                if(ch-'c'==0){ 
                    timer.cancel();//使用這個方法退出任務

                }
            } catch (IOException e) { 
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } 
    }

    
    static class MyTask extends java.util.TimerTask{ 
        @Override
        public void run() { 
            // TODO Auto-generated method stub
            System.out.println("________");
        }
    }
    }

 

 如果你使用的是JDK 5+,還有一個scheduleAtFixedRate模 式可以用,在這個模式下,Timer會盡量的讓任務在一個固定的頻率下運行,舉例說明:在上面的例子中,我們想讓MyTask在1秒鐘后,每兩秒鐘執行一 次,但是因為java不是實時的(其實java實時性很差.....),所以,我們在上個程序中表達的原義并不能夠嚴格執行.如果我們調用的是 scheduleAtFixedRate,那么,Timer會盡量讓你的Task執行的頻率保持在2秒一次.運行上面的程序,假設使用的是 scheduleAtFixedRate,那么下面的場景就是可能的:1秒鐘后,MyTask 執行一次,因為系統繁忙,之后的2.5秒后MyTask 才得以執行第二次,然后,Timer記下了這個延遲,并嘗試在下一個任務的時候彌補這個延遲,那么,1.5秒后,MyTask 將執行的三次."以固定的頻率而不是固定的延遲時間去執行一個任務"

下面給出一個復雜點的例子,其中告訴大家怎么退出單個TimerTask,怎么退出所有Task

復制代碼代碼如下:

package MyTimerTest;

 

import java.io.IOException;
import java.util.Timer;
/* 
 * 本類給出了使用Timer和TimerTaske的主要方法,其中包括定制任務,添加任務
 * 退出任務,退出定時器.
 * 因為TimerTask的status域是包級可訪問的,所以沒有辦法在java.util.包外
 * 得到其狀態,這對編程造成一些不便 .我們不能判斷某個Task的狀態了.
 * 
 */

public class TimerTest {

    public static void main(String[] args) { 
        Timer timer = new Timer();
        MyTask myTask1 = new MyTask();
        MyTask myTask2 = new MyTask(); 
        myTask2.setInfo("myTask-2");
        timer.schedule(myTask1, 1000, 2000);
        timer.scheduleAtFixedRate(myTask2, 2000, 3000); 
        while (true) {
 try {


                byte[] info = new byte[1024];
                int len = System.in.read(info); 
                String strInfo = new String(info, 0, len, "GBK");//從控制臺讀出信息
                if (strInfo.charAt(strInfo.length() - 1) == ' ') { 
                    strInfo = strInfo.substring(0, strInfo.length() - 2);
                }
                if (strInfo.startsWith("Cancel-1")) {                     myTask1.cancel();//退出單個任務
                    // 其實應該在這里判斷myTask2是否也退出了,是的話就應該break.但是因為無法在包外得到
                    // myTask2的狀態,所以,這里不能做出是否退出循環的判斷. 
                } else if (strInfo.startsWith("Cancel-2")) {
      myTask2.cancel();
                } else if (strInfo.startsWith("Cancel-All")) {
                     timer.cancel();//退出Timer
                    break;
                } else { 
                    // 只對myTask1作出判斷,偷個懶^_^
                    myTask1.setInfo(strInfo);
                }
            } catch (IOException e) {                 // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
 }

    static class MyTask extends java.util.TimerTask {
            String info = "^_^";

        @Override
        public void run() {


            // TODO Auto-generated method stub
            System.out.println(info);
        }
  public String getInfo() { 
            return info;
        }

        public void setInfo(String info) {


            this.info = info;
        }

    }

}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 无删减影视免费观看 | 关晓彤一级做a爰片性色毛片 | 麻豆自拍| 日出水了特别黄的视频 | 免费观看成年人视频 | 国产成人夜色91 | 亚洲高清在线视频 | 国产欧美日韩综合 | 午夜精品久久久久久 | 男人影院天堂网址 | 3d动漫美女被吸乳羞羞视频 | 99热这里有免费国产精品 | 国产成人亚洲精品一区二区在线看 | 亚洲国产成人久久午夜 | 4hu影院永久在线播放 | www.亚洲视频 | 天堂在线中文无弹窗全文阅读 | 国产永久免费视频m3u8 | h版小说 | 亚洲无人区乱码中文字幕 | xxoo好深好爽动态 | 国产卡一卡二卡3卡乱码免费 | a免费看 | 华人在线视频 | 手机在线观看网站免费视频 | 欧美综合另类 | 99午夜| 欧美综合国产精品日韩一 | 色婷婷六月丁香在线观看 | 精品人伦一区二区三区潘金莲 | 天天做天天爱天天操 | 亚洲AV国产精品无码精 | 色五月天天 | 99国产精品热久久久久久夜夜嗨 | 国产精品视频2021 | 亚洲 欧美 在线观看 | 国产在线精品成人一区二区三区 | 免费特黄一区二区三区视频一 | 日韩国产成人 | 国产在线视频福利 | 精品国产乱码久久久久久软件 |