第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • Timer 的缺陷:

    ???? 1 并發(fā)操作時的缺陷,這是因為 Timer 的后臺只有一個執(zhí)行線程導致的。

    ???? 2 當任務拋出異常時的缺陷。如果 TimeTask 拋出 RuntimeException,Timer 會停止所有任務的執(zhí)行。


    根據(jù)缺陷,我們可以得出 Timer 的使用禁區(qū)。

    ????1 對時效性要求較高的多任務并發(fā)作業(yè),雖然 Timer 支持多任務執(zhí)行,但那都是串行執(zhí)行的。

    ????2 對復雜的任務的調(diào)度,因為在復雜的任務中可能會出現(xiàn)異常,而Timer 中一旦出現(xiàn)異常,則停止執(zhí)行。

    查看全部
    0 采集 收起 來源:Timer的缺陷

    2023-07-12

  • schedule與scheduleAtFixedRate的區(qū)別

    情況1:計劃執(zhí)行的時間早于當前的時間。

    schedule方法:當調(diào)用該方法時,調(diào)用定時任務的時間以當前時間為準,可以通過調(diào)用scheduleExecutionTime查看時間的基準。(設置了00:00開始執(zhí)行,每兩秒鐘執(zhí)行一次,但是任務開始的時候是00:06,那么就會執(zhí)行00:06? 00:08 )

    scheduleAtFixedRate():調(diào)用該方法時,以方法中傳入的時間為準,例如,傳入的時間為12:00,那么scheduleExecutionTime()的時間就是12:00,如果當前時間晚于傳入的時間,那么就會進行追趕多次執(zhí)行該方法。注意:它存在并發(fā)性,例如圖片中當前時間為15:05:31,但是調(diào)用定時任務的時間為15:05:25,那么它就會在同一時間執(zhí)行三次該方法。 25 27 29 31,25 27 29是一瞬間執(zhí)行

    情況2:任務執(zhí)行所需時間超出任務執(zhí)行的時間間隔。??

    schedule方法:比如規(guī)定2s執(zhí)行一次,但是執(zhí)行需要3s,那么schedule(timeTask,calender.getTime(),2000),就會在設置的calender中執(zhí)行一次,以及3s后執(zhí)行一次

    scheduleAtFixRate():?比如規(guī)定2s執(zhí)行一次,但是執(zhí)行需要3s,那么schedule(timeTask,calender.getTime(),2000),就會在設置的calender中執(zhí)行一次,以及2s后執(zhí)行一次,存在并發(fā)性



    查看全部
  • TimerTask的cancel()函數(shù)的作用:取消當前TimerTask里的任務
    TimerTask的scheduleExecutionTime()作用:返回此任務最近實際執(zhí)行的已安排執(zhí)行的時間,返回值:最近發(fā)生此任務執(zhí)行安排的時間,為long型

    Timer的cancel()函數(shù)的作用:終止此計時器,丟棄所有當前已安排的任務
    Timer的purge()函數(shù)的作用:從此計時器的任務隊列中移除所有已取消的任務。返回值:從隊列中移除的任務數(shù)。

    查看全部
  • Timer的schedule方法的四種用法:

    1、schedule(TimerTask task,Date time):在時間等于time或超過time執(zhí)行且執(zhí)行一次task(task業(yè)務線程,time時間)。在time或超過time的時候執(zhí)行一次,且只執(zhí)行一次

    2、schedule(TimerTask task,Date time,long period):前兩個參數(shù)和1一樣,這里第三個參數(shù)表示每隔多長時間該任務調(diào)度線程調(diào)用業(yè)務線程。在time的時候執(zhí)行一次,之后每間隔period就會執(zhí)行一次

    3、schedual(TimerTask task,long delay):延遲當前時間多少秒之后執(zhí)行該定時任務,并且僅執(zhí)行一次。

    4、schedual(TimerTask task,long delay,long?period):延遲當前時間delay秒之后執(zhí)行定時任務,并且每隔period執(zhí)行一次定時任務。

    Timer的scheduleAtFixedRate的兩種用法:

    1、scheduleAtFixedRated(TimerTask?task,Date?date,long?period):到date指定時間每隔period執(zhí)行一次定時任務task。

    2、scheduleAtFixedRated(TimerTask?task,long?delay,long?period):延遲當前時間delay毫秒后每隔period時間執(zhí)行一次定時任務。

    查看全部

  • TimerThread是后臺執(zhí)行的線程;TimerTask對應的是業(yè)務線程,run()中涵蓋了業(yè)務的邏輯。TimerThread通過定期調(diào)用隊列里的TimerTask的run()方法,來實現(xiàn)對任務的定時定頻率的調(diào)度。我們只需要關注Timer和TimerTask。TimerThread和TaskQueue都是透明的。

    http://img1.sycdn.imooc.com//64ad6a4300015a4112650625.jpg

    http://img1.sycdn.imooc.com//64ad6a5e000103fd10250723.jpg

    查看全部
    0 采集 收起 來源:timer簡介

    2023-07-11

  • 定時任務調(diào)度:基于給定的時間點,給定的時間間隔,給定的執(zhí)行次數(shù)自動執(zhí)行的任務。Java中的定時任務1、Timer2、QuartzTimer和Quartz的區(qū)別:1、Timer由jdk提供,調(diào)用簡單,不要需要導入jar包。而Quartz需要導入jar包,不是jdk自帶。2、Quartz的功能比Timer的功能強大完善。3、Timer后臺執(zhí)行一個線程來完成定時任務,Quartz可以在后臺執(zhí)行多個線程來完成定時任務。

    查看全部
    0 采集 收起 來源:課程介紹

    2023-07-11

  • TimerThread是后臺執(zhí)行的線程;TimerTask對應的是業(yè)務線程,run()中涵蓋了業(yè)務的邏輯。

    TimerThread通過定期調(diào)用隊列里的TimerTask的run()方法,來實現(xiàn)對任務的定時定頻率的調(diào)度。

    我們只需要關注Timer和TimerTask。TimerThread和TaskQueue都是透明的。

    查看全部
    0 采集 收起 來源:timer簡介

    2020-03-28

  • Timer的缺陷

    1、管理并發(fā)任務的缺陷:Timer有且僅有一條后臺的線程,對定時任務定時定頻率的調(diào)用,對于多任務來說并不支持任務與任務之間的并發(fā)。

    例如:

    http://img1.sycdn.imooc.com//5e080a140001b33808560825.jpg

    2、任務拋出異常的缺陷:它對runtimeexception的支持不是很好。

    http://img1.sycdn.imooc.com//5e080faa000192b710080408.jpg

    舉例:

    http://img1.sycdn.imooc.com//5e0810a00001f4d208660629.jpg

    查看全部
    0 采集 收起 來源:Timer的缺陷

    2019-12-29

  • schedule與scheduleAtFixedRate的區(qū)別

    情況1:計劃執(zhí)行的時間早于當前的時間。

    http://img1.sycdn.imooc.com/5e06f7e10001501311330453.jpg

    http://img1.sycdn.imooc.com//5e06fed70001f76310200771.jpg

    schedule方法:當調(diào)用該方法時,調(diào)用定時任務的時間以當前時間為準,可以通過調(diào)用scheduleExecutionTime查看時間的基準。

    http://img4.sycdn.imooc.com/5e06fde6000160f011420491.jpg

    http://img1.sycdn.imooc.com//5e06fec20001a3db08850798.jpg

    scheduleAtFixedRate():調(diào)用該方法時,以方法中傳入的時間為準,例如,傳入的時間為12:00,那么scheduleExecutionTime()的時間就是12:00,如果當前時間晚于傳入的時間,那么就會進行追趕多次執(zhí)行該方法。注意:它存在并發(fā)性,例如圖片中當前時間為15:05:31,但是調(diào)用定時任務的時間為15:05:25,那么它就會在同一時間執(zhí)行三次該方法。

    情況2:任務執(zhí)行所需時間超出任務執(zhí)行的時間間隔。

    schedule()

    http://img1.sycdn.imooc.com//5e07015e00016d6209320858.jpg

    http://img1.sycdn.imooc.com//5e0701050001e18b10660463.jpghttp://img1.sycdn.imooc.com//5e0701690001c8b710310391.jpg

    scheduleAtFixedTime()

    http://img1.sycdn.imooc.com//5e0702600001790411180445.jpg

    http://img1.sycdn.imooc.com//5e07024f000157b808420860.jpg

    查看全部
  • TimerTask的cancel()、scheduledExecutionTime()

    cancel():取消當前TimerTask里的任務。

    http://img1.sycdn.imooc.com/5e06bb4900012f6e09110577.jpg

    http://img1.sycdn.imooc.com/5e06bb3d0001006508290861.jpg

    scheduledExecutionTime():返回最近一次執(zhí)行該定時任務的時間。

    http://img3.sycdn.imooc.com/5e06be56000173a607090709.jpg

    Timer的cancel()、purge()

    cancel():Timer下的cancel()表示結束當前Timer的所有定時任務。

    http://img3.sycdn.imooc.com/5e06c55c0001aea109970860.jpg

    purge():表示從此Timer的定時任務隊列中移除所有已經(jīng)取消的定時任務,并且返回移除的個數(shù)。

    http://img1.sycdn.imooc.com/5e06c78a000155b907740930.jpg


    查看全部
  • Timer的schedule方法的四種用法:

    1、schedule(TimerTask task,Date time):在時間等于time或超過time執(zhí)行且執(zhí)行一次task(task業(yè)務線程,time時間)。

    http://img2.sycdn.imooc.com/5e04c01700015e7408490762.jpghttp://img4.sycdn.imooc.com/5e04c0250001f5ec08890795.jpg

    2、schedule(TimerTask task,Date time,long period):前兩個參數(shù)和1一樣,這里第三個參數(shù)表示每隔多長時間該任務調(diào)度線程調(diào)用業(yè)務線程。

    http://img2.sycdn.imooc.com/5e04c21d0001426f08370900.jpg

    http://img1.sycdn.imooc.com/5e04c22a00019d3507380848.jpg

    3、schedual(TimerTask task,long delay):延遲當前時間多少秒之后執(zhí)行該定時任務,并且僅執(zhí)行一次。

    4、schedual(TimerTask task,long delay,long?period):延遲當前時間delay秒之后執(zhí)行定時任務,并且每隔period執(zhí)行一次定時任務。

    Timer的scheduleAtFixedRate的兩種用法:

    1、scheduleAtFixedRated(TimerTask?task,Date?date,long?period):到date指定時間每隔period執(zhí)行一次定時任務task。

    2、scheduleAtFixedRated(TimerTask?task,long?delay,long?period):延遲當前時間delay毫秒后每隔period時間執(zhí)行一次定時任務。


    查看全部
  • Timer定義:java.util.Timer包,有且僅有一個后臺線程對多個業(yè)務線程進行定時定頻率的調(diào)度。

    Timer(調(diào)度線程)——》TimerTask(業(yè)務線程)

    Timer工具類詳解:如圖,這里可以理解TimerThread是后臺定時調(diào)用的線程,而TimerTask可以理解為業(yè)務線程,業(yè)務線程要在run方法中進行實現(xiàn)。http://img4.sycdn.imooc.com/5e04b42800016df307560576.jpg

    舉例:如圖,業(yè)務線程的實現(xiàn)需要在繼承TimerTask的run方法中實現(xiàn),調(diào)度業(yè)務線程需要通過Timer實例的schedule方法,參數(shù)1表示業(yè)務線程所在類實例,參數(shù)2表示起初隔多長時間執(zhí)行該調(diào)度線程,參數(shù)3表示每個多長時間間隔執(zhí)行業(yè)務線程。

    http://img1.sycdn.imooc.com//5e04b6f900014b1706290387.jpg

    http://img1.sycdn.imooc.com//5e04b7020001c11e07930315.jpg

    查看全部
    0 采集 收起 來源:timer簡介

    2019-12-26

  • 定時任務調(diào)度:基于給定的時間點,給定的時間間隔,給定的執(zhí)行次數(shù)自動執(zhí)行的任務。

    Java中的定時任務

    1、Timer

    2、Quartz

    Timer和Quartz的區(qū)別:

    1、Timer由jdk提供,調(diào)用簡單,不要需要導入jar包。而Quartz需要導入jar包,不是jdk自帶。

    2、Quartz的功能比Timer的功能強大完善。

    3、Timer后臺執(zhí)行一個線程來完成定時任務,Quartz可以在后臺執(zhí)行多個線程來完成定時任務。

    查看全部
    1 采集 收起 來源:課程介紹

    2019-12-26

  • scheduleAtFixedRate方法

    “fixed-rate”;如果第一次執(zhí)行時間被delay了,隨后的執(zhí)行時間按照上一次開始的時間點進行計算,并且為了趕上進度會多次執(zhí)行任務,因此TimerTask中的執(zhí)行體需要考慮

    查看全部
  • schedule與scheduleAtFixedRate的區(qū)別

    從兩種情況看區(qū)別

    1、首次計劃執(zhí)行的時間早于當前的時間(比如:當前時間是雙十一的00:00:06而我們計劃執(zhí)行的時間是雙十一的00:00:00)

    2、任務執(zhí)行所需的時間超出任務的執(zhí)行周期間隔(比如:這個任務需要每隔兩秒執(zhí)行一次,但是單次這個任務的執(zhí)行時間就是3秒)

    查看全部
  • Timer的定義

    有且僅有一個后臺線程 對 多個業(yè)務線程 進行 定時定頻率 的調(diào)度

    查看全部
    0 采集 收起 來源:timer簡介

    2019-07-14

  • Java定時任務調(diào)度工具Timer

    前言:

    首先我們先明確一下什么是定時任務調(diào)度?

    基于給定的時間點,給定的時間間隔或者給定的執(zhí)行次數(shù)自動執(zhí)行的任務。

    Java中定時任務調(diào)動工具有倆:Timer 、Quartz

    區(qū)別:

    ? ? 出身不同:Timer由jdk直接提供,不需jar包支持;Quartz需引入jar包。

    ????能力不同:Timer簡單定時任務;Quartz時間控制功能更強大。

    ????底層機制:Timer只有一個后臺線程執(zhí)行;Quartz是多線程執(zhí)行任務。

    一.Timer簡介:

    ? ? 讓我們看下官方文檔api(JDK1.8)

    172519_i6su_3700425.png

    可能有的小伙伴英語水平不太好,那讓我們看下中文版吧:

    ?

    172143_Py0o_3700425.png

    那么我們可以歸納Timer的定義:有且僅有一個后臺線程對多個業(yè)務線程進行定時定頻率的調(diào)度

    主要構件:

    172935_zg4G_3700425.png

    ?

    Timer工具類詳解:

    173200_bAJV_3700425.png

    二.Timer實戰(zhàn)

    1.簡單實戰(zhàn)

    1)定時任務類

    package?com.leo.timer;import?java.util.TimerTask;public?class?MyTimerTask?extends?TimerTask?{????private?String?name;????public?MyTimerTask(String?inputName){
    ????????name=inputName;
    ????}????@Override
    ????public?void?run()?{????????//打印當前name的內(nèi)容
    ????????System.out.println("Current?exec?name?is"+name);
    ????}????public?String?getName()?{????????return?name;
    ????}????public?void?setName(String?name)?{????????this.name?=?name;
    ????}
    }

    2)Timer啟動

    package?com.leo.timer;import?java.util.Timer;public?class?MyTimer?{????public??static?void??main(String[]?args){????????//1.創(chuàng)建一個timer實例
    ????????Timer?timer=new?Timer();????????//2.創(chuàng)建一個MyTimerTask實例
    ????????MyTimerTask?myTimerTask=new?MyTimerTask("No.1");????????//3.通過timer定時頻率調(diào)用myTImerTask的業(yè)務邏輯
    ????????//?既第一次執(zhí)行是在當前時間的兩秒之后,之后每隔一秒鐘執(zhí)行一次
    ????????timer.schedule(myTimerTask,2000L,1000L);
    ????}
    }

    控制臺打印顯示:

    204722_dwNX_3700425.png

    ?

    2.Timer的定時調(diào)度函數(shù)

    1)schedule的四種用法

    ? ? 1.schedule(task,time)

    ????????作用:在時間等于或超過time的時候執(zhí)行且僅執(zhí)行一次task

    ? ? 2.schedule(task,time,period)

    ????????參數(shù):????task-所要安排的任務

    ????????????????????? time-首次執(zhí)行任務的時間

    ????????????????????? period-執(zhí)行一次task的時間間隔,單位是毫秒

    ? ? 3.schedule(task,delay)

    ????????參數(shù):????task-所要安排的任務

    ????????????????????? delay-執(zhí)行任務前的延遲時間,單位是毫秒

    ?????? ?作用:??? 等待delay毫秒后執(zhí)行且僅執(zhí)行一次task

    ? ? 4.schedule(task,delay,period)

    ????????參數(shù):????task-所要安排的任務

    ????????????????????? delay-執(zhí)行任務前的延遲時間,單位是毫秒

    ????????????????????? period-執(zhí)行一次task的時間間隔,單位是毫秒

    ?????? ?作用:??? 等待delay毫秒后執(zhí)行且僅執(zhí)行一次task,之后每隔period毫秒重復執(zhí)行一次task

    具體代碼如下:

    ????定時任務類:

    ????

    package?com.leo.timer;import?java.text.SimpleDateFormat;import?java.util.Calendar;import?java.util.TimerTask;public?class?MyTimerTask?extends?TimerTask?{????private?String?name;????public?MyTimerTask(String?inputName){
    ????????name=inputName;
    ????}????@Override
    ????public?void?run()?{????????//打印當前name的內(nèi)容
    ????????System.out.println("Current?exec?name?is?"+name);????????//以yyyy-MM-dd?HH:mm:ss的格式打印當前執(zhí)行時間
    ????????Calendar?calendar=Calendar.getInstance();
    ????????SimpleDateFormat?sf=new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
    ????????System.out.println("Current?exec?time?is"+sf.format(calendar.getTime()));
    ????}????public?String?getName()?{????????return?name;
    ????}????public?void?setName(String?name)?{????????this.name?=?name;
    ????}
    }

    ? ? 四中啟動類:

    ????????

    package?com.leo.timer;import?java.text.SimpleDateFormat;import?java.util.Calendar;import?java.util.Timer;public?class?MyTimer?{????public??static?void??main(String[]?args){????????//一.創(chuàng)建一個timer實例
    ????????Timer?timer=new?Timer();????????//二.創(chuàng)建一個MyTimerTask實例
    ????????MyTimerTask?myTimerTask=new?MyTimerTask("No.1");????????//三.通過timer定時頻率調(diào)用myTImerTask的業(yè)務邏輯
    ????????//?既第一次執(zhí)行是在當前時間的兩秒之后,之后每隔一秒鐘執(zhí)行一次
    ????????//timer.schedule(myTimerTask,2000L,1000L);
    
    ????????/**
    ?????????*?獲取當前時間,并設置成距離當前時間三秒之后的時間
    ?????????*?如果當前時間是2017-10-21?23:59:57
    ?????????*?則設置后的時間則為2017-10-22?00:00:00
    ?????????*/
    ????????Calendar?calendar=Calendar.getInstance();
    ????????SimpleDateFormat?sf=new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
    ????????System.out.println(sf.format(calendar.getTime()));
    ????????calendar.add(Calendar.SECOND,3);????????/**
    ?????????*?1.??schedule(task,time)
    ?????????*??????在時間等于或超過time的時候執(zhí)行且僅執(zhí)行一次task
    ?????????*??????如在2017-10-22?00:00:00?執(zhí)行一次task:打印任務的名字
    ?????????*/
    ????????//myTimerTask.setName("schedule1");
    ????????//timer.schedule(myTimerTask,calendar.getTime());
    ????????/**
    ?????????*?2.?schedule(task,time,period)
    ?????????*??????時間等于或超過time時首次執(zhí)行task
    ?????????*??????之后每隔period毫秒重復執(zhí)行一次task
    ?????????*??????如在2017-10-22?00:00:00?第一次執(zhí)行task:打印任務的名字
    ?????????*??????之后每隔兩秒執(zhí)行一次task
    ?????????*/
    ????????//myTimerTask.setName("schedule2");
    ????????//timer.schedule(myTimerTask,calendar.getTime(),2000);
    ????????/**
    ?????????*?3.?schedule(task,delay)
    ?????????*??????等待delay毫秒后執(zhí)行且僅執(zhí)行一次task
    ?????????*??????如現(xiàn)在是2017-10-22?00:00:00
    ?????????*??????則在2017-10-22?00:00:01執(zhí)行一次task::打印任務的名字
    ?????????*/
    ????????//myTimerTask.setName("schedule3");
    ????????//timer.schedule(myTimerTask,1000);
    ????????/**
    ?????????*?4.??schedule(task,delay,period)
    ?????????*??????等待delay毫秒后首次執(zhí)行task
    ?????????*??????如現(xiàn)在是2017-10-22?00:00:00
    ?????????*??????則在2017-10-22?00:00:01執(zhí)行一次task::打印任務的名字
    ?????????*??????之后每隔兩秒執(zhí)行一次task
    ?????????*/
    ?????????myTimerTask.setName("schedule4");
    ?????????timer.schedule(myTimerTask,calendar.getTime(),2000);
    ????}
    }

    2)scheduleAtFixedRate的四種用法? ??????? ?

    ? ? 1.scheduleAtFixedRate(task,time,period)

    ????????參數(shù):????task-所要安排的任務

    ????????????? ????????time-首次執(zhí)行任務的時間

    ????????????? ????????period-執(zhí)行一次task的時間間隔,單位是毫秒? ??

    ???????作用:? ??時間等于或超過time時首次執(zhí)行task,之后每隔period毫秒重復執(zhí)行一次task(和schedule的第二種用法是一樣的)

    ? ? 2.scheduleAtFixedRate(task,delay,period)

    ????? ? 參數(shù):????task-所要安排的任務

    ????????????????????? delay-執(zhí)行任務前的延遲時間,單位是毫秒

    ????????????????????? period-執(zhí)行一次task的時間間隔,單位是毫秒

    ?????? ?作用:??? 等待delay毫秒后執(zhí)行且僅執(zhí)行一次task,之后每隔period毫秒重復執(zhí)行一次task(和schedule的第四種用法是一樣的)

    代碼:

    ?//----------------scheduleAtFixedRate的用法-------------------------------
    ????????/**
    ?????????*?1?.?scheduleAtFixedRate(task,time,period)
    ?????????*??????時間等于或超過time時首次執(zhí)行task
    ?????????*??????之后每隔period毫秒重復執(zhí)行一次task
    ?????????*??????如在2017-10-22?00:00:00?第一次執(zhí)行task:打印任務的名字
    ?????????*??????之后每隔兩秒執(zhí)行一次task
    ?????????*/
    ????????//myTimerTask.setName("scheduleAtFixedRate1");
    ????????//timer.scheduleAtFixedRate(myTimerTask,calendar.getTime(),2000);
    ????????/**
    ?????????*?2.??scheduleAtFixedRate(task,delay,period)
    ?????????*??????等待delay毫秒后首次執(zhí)行task
    ?????????*??????如現(xiàn)在是2017-10-22?00:00:00
    ?????????*??????則在2017-10-22?00:00:01執(zhí)行一次task::打印任務的名字
    ?????????*??????之后每隔兩秒執(zhí)行一次task
    ?????????*/
    ????????myTimerTask.setName("scheduleAtFixedRate2");
    ????????timer.scheduleAtFixedRate(myTimerTask,3000,2000);

    ?

    我們先來看Timer的其他重要函數(shù),下一標題再具體講解schedule和schedulAtFixedRate二者的不同

    3)其他重要函數(shù)

    ? ? 1.TimerTask的cancel(),scheduledExecutionTime() :

    ????? ? cancel:

    ????????????作用:取消當前TimerTask里的任務

    ????????

    ????@Override
    ????public?void?run()?{????????if?(count<3){????????????//打印當前name的內(nèi)容
    ????????????System.out.println("Current?exec?name?is?"+name);????????????//以yyyy-MM-dd?HH:mm:ss的格式打印當前執(zhí)行時間
    ????????????Calendar?calendar=Calendar.getInstance();
    ????????????SimpleDateFormat?sf=new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
    ????????????System.out.println("Current?exec?time?is"+sf.format(calendar.getTime()));
    ????????????count++;
    ????????}else?{
    ????????????cancel();
    ????????????System.out.println("Task?cancel");
    ????????}
    ????}

    ????? ? scheduledExecutionTime():

    ????????? ? 作用:返回此任務最近實際執(zhí)行的已安排執(zhí)行的時間

    ?

    ????2.Timer的cancel() , perge()?:

    ????? ??cancel():

    ????????? ? 作用:終止此計時器,丟棄所有當前已安排的任務

    ????????233606_ynFl_3700425.png

    ????? ? purge():

    ????????? ? 作用:從此計時器的任務隊列中移除所要已取消的任務

    ????????? ? 返回值:從隊列中移除的任務數(shù)

    234105_l0Fd_3700425.png

    3.schedule和scheduleAtFixeRate的區(qū)別

    1)首次計劃執(zhí)行的時間早于當前的時間

    ? ? 1.schedule方法:

    ????????????"fixed-delay"如果第一次執(zhí)行時間被delay了,隨后的執(zhí)行時間按上一次實際執(zhí)行完成的時間點進行計算

    000358_MkvD_3700425.png

    console:

    000556_8RYO_3700425.png

    ????2.scheduleAtFixedRate方法:

    ????????????"fixed-rate"如果第一次執(zhí)行時間被delay了,隨后的執(zhí)行時間按上一次實際執(zhí)行完成的時間點進行計算,并且為了趕上進度會多次執(zhí)行任務,因此TimerTask中的執(zhí)行體需要考慮同步

    001121_I684_3700425.png

    console:

    001158_cyfJ_3700425.png

    ?

    ?2)任務執(zhí)行所需時間超出任務的執(zhí)行周期間隔

    ? ? 1.schedule方法:

    ????????????下一次執(zhí)行時間相對于上一次實際執(zhí)行完成的時間點,因此執(zhí)行時間會不斷延后

    002010_eqXy_3700425.png

    console:

    002047_fK7f_3700425.png

    ????2.scheduleAtFixedRate方法:

    ????????????下一次執(zhí)行時間相對于上一次開始的時間點,因此執(zhí)行的時間不會延后,因此存在并發(fā)性

    002322_VjSr_3700425.png

    console:

    002415_XfgL_3700425.png

    4.Timer的缺陷:

    1)管理并發(fā)任務的缺陷

    ? ? Timer有且僅有一個線程去執(zhí)行定時任務,如果存在多個定時任務,且任務時間過長,會導致執(zhí)行效果與預期不符

    003147_z6tn_3700425.png

    003228_G3df_3700425.png

    console:

    003345_p8CL_3700425.png

    同樣scheduleAtFixedRate也不能解決并發(fā)問題:

    003506_ljLB_3700425.png

    2)當任務拋出異常時的缺陷

    ? ? 如果TimerTask拋出RuntimeException,Timer會停止所有任務的執(zhí)行

    三.Timer的使用禁區(qū):

    1.對時效性要求較高的多任務并發(fā)作業(yè)

    2.對復雜的任務的調(diào)度

    如果想要滿足以上功能,需用到Quartz

    查看全部
首頁上一頁1234567下一頁尾頁

舉報

0/150
提交
取消
課程須知
本課程是初級課程,了解基本java語法可聽。
老師告訴你能學到什么?
定時任務的基本概念,Timer的函數(shù),綜合運用和缺陷

微信掃碼,參與3人拼團

微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網(wǎng)的支持!