最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA TIMER簡(jiǎn)單用法學(xué)習(xí)

 更新時(shí)間:2013年07月01日 14:31:58   作者:  
Timer類是用來(lái)執(zhí)行任務(wù)的類,它接受一個(gè)TimerTask做參數(shù)

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

復(fù)制代碼 代碼如下:

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秒后執(zhí)行此任務(wù),每次間隔2秒,如果傳遞一個(gè)Data參數(shù),就可以在某個(gè)固定的時(shí)間執(zhí)行這個(gè)任務(wù).
        while(true){//這個(gè)是用來(lái)停止此任務(wù)的,否則就一直循環(huán)執(zhí)行此任務(wù)了
            try {
                int ch = System.in.read();
                if(ch-'c'==0){
                    timer.cancel();//使用這個(gè)方法退出任務(wù)

                }
            } 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+,還有一個(gè)scheduleAtFixedRate模 式可以用,在這個(gè)模式下,Timer會(huì)盡量的讓任務(wù)在一個(gè)固定的頻率下運(yùn)行,舉例說(shuō)明:在上面的例子中,我們想讓MyTask在1秒鐘后,每?jī)擅腌妶?zhí)行一 次,但是因?yàn)閖ava不是實(shí)時(shí)的(其實(shí)java實(shí)時(shí)性很差.....),所以,我們?cè)谏蟼€(gè)程序中表達(dá)的原義并不能夠嚴(yán)格執(zhí)行.如果我們調(diào)用的是 scheduleAtFixedRate,那么,Timer會(huì)盡量讓你的Task執(zhí)行的頻率保持在2秒一次.運(yùn)行上面的程序,假設(shè)使用的是 scheduleAtFixedRate,那么下面的場(chǎng)景就是可能的:1秒鐘后,MyTask 執(zhí)行一次,因?yàn)橄到y(tǒng)繁忙,之后的2.5秒后MyTask 才得以執(zhí)行第二次,然后,Timer記下了這個(gè)延遲,并嘗試在下一個(gè)任務(wù)的時(shí)候彌補(bǔ)這個(gè)延遲,那么,1.5秒后,MyTask 將執(zhí)行的三次."以固定的頻率而不是固定的延遲時(shí)間去執(zhí)行一個(gè)任務(wù)"

下面給出一個(gè)復(fù)雜點(diǎn)的例子,其中告訴大家怎么退出單個(gè)TimerTask,怎么退出所有Task

復(fù)制代碼 代碼如下:

package MyTimerTest;

import java.io.IOException;
import java.util.Timer;
/*
 * 本類給出了使用Timer和TimerTaske的主要方法,其中包括定制任務(wù),添加任務(wù)
 * 退出任務(wù),退出定時(shí)器.
 * 因?yàn)門imerTask的status域是包級(jí)可訪問(wèn)的,所以沒(méi)有辦法在java.util.包外
 * 得到其狀態(tài),這對(duì)編程造成一些不便 .我們不能判斷某個(gè)Task的狀態(tài)了.
 *
 */

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");//從控制臺(tái)讀出信息
                if (strInfo.charAt(strInfo.length() - 1) == ' ') {
                    strInfo = strInfo.substring(0, strInfo.length() - 2);
                }
                if (strInfo.startsWith("Cancel-1")) {                     myTask1.cancel();//退出單個(gè)任務(wù)
                    // 其實(shí)應(yīng)該在這里判斷myTask2是否也退出了,是的話就應(yīng)該break.但是因?yàn)闊o(wú)法在包外得到
                    // myTask2的狀態(tài),所以,這里不能做出是否退出循環(huán)的判斷.
                } else if (strInfo.startsWith("Cancel-2")) {
      myTask2.cancel();
                } else if (strInfo.startsWith("Cancel-All")) {
                     timer.cancel();//退出Timer
                    break;
                } else {
                    // 只對(duì)myTask1作出判斷,偷個(gè)懶^_^
                    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;
        }

    }

}

相關(guān)文章

  • java代理模式與動(dòng)態(tài)代理模式詳解

    java代理模式與動(dòng)態(tài)代理模式詳解

    代理就是一個(gè)人或者一個(gè)機(jī)構(gòu)代表另一個(gè)人或者另一個(gè)機(jī)構(gòu)采取行動(dòng)。在一些情況下,一個(gè)客戶不想或者不能夠直接引用一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之前起到中介的作用
    2014-02-02
  • Java 讀取圖片的mimeType的方法

    Java 讀取圖片的mimeType的方法

    本篇文章主要介紹了Java 讀取圖片的mimeType的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • java 刪除數(shù)組元素與刪除重復(fù)數(shù)組元素的代碼

    java 刪除數(shù)組元素與刪除重復(fù)數(shù)組元素的代碼

    在java中刪除數(shù)組元素與過(guò)濾重復(fù)數(shù)組元素我們都會(huì)需要去遍歷數(shù)組然后根據(jù)我們?cè)O(shè)置的值或方法進(jìn)行去除數(shù)組
    2013-10-10
  • 一個(gè)簡(jiǎn)易的Java多頁(yè)面隊(duì)列爬蟲(chóng)程序

    一個(gè)簡(jiǎn)易的Java多頁(yè)面隊(duì)列爬蟲(chóng)程序

    這篇文章主要為大家詳細(xì)介紹了一個(gè)多頁(yè)面的java爬蟲(chóng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Spring Core核心類庫(kù)的功能與應(yīng)用實(shí)踐分析

    Spring Core核心類庫(kù)的功能與應(yīng)用實(shí)踐分析

    本文詳細(xì)介紹了SpringCore核心類庫(kù)的功能、應(yīng)用實(shí)踐和底層原理,SpringCore提供了控制反轉(zhuǎn)(IOC)、依賴注入(DI)、Bean管理以及JNDI、定時(shí)任務(wù)等企業(yè)級(jí)功能,文章通過(guò)多個(gè)Java示例展示了SpringCore的應(yīng)用,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • SpringBoot框架如何操作Excel和PDF

    SpringBoot框架如何操作Excel和PDF

    Excel和PDF都是常見(jiàn)的辦公文件類型,在實(shí)際需求中有著較多的應(yīng)用,excel經(jīng)常用來(lái)處理數(shù)據(jù),PDF文件格式可以將文字、字型、格式、顏色及獨(dú)立于設(shè)備和分辨率的圖形圖像等封裝在一個(gè)文件中,本文就講述下SpringBoot框架如何操作這兩種類型的文件
    2021-06-06
  • java 中createStatement()方法的實(shí)例詳解

    java 中createStatement()方法的實(shí)例詳解

    這篇文章主要介紹了java 中createStatement()方法的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 一篇文章帶你深入了解Java對(duì)象與Java類

    一篇文章帶你深入了解Java對(duì)象與Java類

    這篇文章主要給大家介紹了關(guān)于java中類和對(duì)象的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • 通過(guò)實(shí)例解析java String不可變性

    通過(guò)實(shí)例解析java String不可變性

    這篇文章主要介紹了通過(guò)實(shí)例解析java String不可變性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • vue 使用vuex在頁(yè)面跳轉(zhuǎn)的實(shí)現(xiàn)方式

    vue 使用vuex在頁(yè)面跳轉(zhuǎn)的實(shí)現(xiàn)方式

    這篇文章主要介紹了vue 使用vuex在頁(yè)面跳轉(zhuǎn)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論

弋阳县| 甘泉县| 湛江市| 普洱| 库车县| 东阳市| 鹤壁市| 平阴县| 大石桥市| 云梦县| 太湖县| 卢湾区| 舒城县| 钟祥市| 普兰店市| 绥芬河市| 淮南市| 集贤县| 星座| 卫辉市| 偏关县| 息烽县| 福州市| 枣强县| 公安县| 乌鲁木齐市| 孙吴县| 马边| 麻城市| 轮台县| 恩施市| 弥勒县| 罗源县| 城口县| 正镶白旗| 阳江市| 通化市| 临湘市| 湟中县| 双鸭山市| 沾化县|