package Ġpers . ac p . core . task . timer Ċ Ċ import Ġpers . ac p . core . log . Log Factory Ċ import Ġpers . ac p . core . task . Base AsyncTask Ċ import Ġpers . ac p . core . task . timer . rule . Circle Type Ċ import Ġpers . ac p . core . task . timer . rule . Execute Type Ċ import Ġpers . ac p . core . tools . Common Utils Ċ import Ġjava . util . concurrent . Scheduled ThreadPoolExecutor Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* Ġ@ author Ġz hang Ġby Ġ 1 0 / 0 7 / 2 0 1 9 Ċ Ġ* Ġ@ since ĠJDK Ġ 1 1 Ċ Ġ*/ Ċ class ĠTimer Driver Ċ /** Ċ Ġ* Ġ æŀĦéĢł åĩ½æķ° Ċ Ġ* Ċ Ġ* Ġ@ param Ġthread Number Ġ å·¥ä½ľ çº¿ç¨ĭ æķ° Ċ Ġ* Ġ@ param Ġcircle Type ĠĠ Ġæī§è¡Į åĳ¨æľŁ : Time , ĠDay , ĠWeek , ĠMonth , ĠQu arter , ĠYear Ċ Ġ* Ġ@ param Ġrules ĠĠĠĠĠĠĠ Ġæī§è¡Į æĹ¶éĹ´ çĤ¹ è§ĦåĪĻ : Ġ æĹ¶éĹ´ - å¼Ģå§ĭ æī§è¡Į æĹ¶éĹ´ ï¼Ī HH : MI : SS ï¼ī ï¼Ī æ²¡æľī åĪĻ è¡¨ç¤º å½ĵåīį æĹ¶éĹ´ ä¸º å¼Ģå§ĭ æĹ¶éĹ´ ï¼ī | æī§è¡Į éĹ´ éļĶ ï¼Ī åįķä½į æ¯ « ç§Ĵ ï¼ī , Ċ Ġ* Ġ æĹ¥ - æĹ¶éĹ´ ï¼Ī HH : MI : SS ï¼ī , Ġ åĳ¨ - åĳ¨ åĩł | æĹ¶éĹ´ ï¼Ī 1 | HH : MI : SS ï¼ī , Ġ æľĪ - åĩł åı· | æĹ¶éĹ´ ï¼Ī 3 1 | HH : MI : SS ï¼ī , Ċ Ġ* Ġ åŃ £ åº¦ - åŃ £ åº¦ åĨħ ç¬¬ åĩł æľĪ | åĩł åı· | æĹ¶éĹ´ ï¼Ī 3 | 3 1 | HH : MI : SS ï¼ī , Ġå¹´ - ç¬¬ åĩł æľĪ | åĩł åı· | æĹ¶éĹ´ ï¼Ī 1 2 | 3 1 | HH : MI : SS ï¼ī Ċ Ġ* Ġ@ param Ġexecute Type Ġ Ġæī§è¡Į ç±»åŀĭ : Week Day , ĠWeek end , ĠAll Ċ Ġ*/ Ċ ( thread Number : ĠInt , Ġprivate Ġval Ġcircle Type : ĠCircle Type Ġ= ĠCircle Type . Day , Ġprivate Ġval Ġrules : ĠString Ġ= Ġ" 0 0 : 0 0 : 0 0 ", Ġprivate Ġval Ġexecute Type : ĠExecute Type Ġ= ĠExecute Type . All ) Ġ: ĠScheduled ThreadPoolExecutor ( thread Number ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLog Factory . getInstance ( java Class )// Ġ æĹ¥å¿Ĺ å¯¹è±¡ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä»»åĬ¡ å®¹åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġcontainer : ĠTimer Task Container ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å®ļæĹ¶ åĻ¨ ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtimer Info (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġinfo Ġ= Ġ"\ nc ircle Type :" Ġ+ Ġcircle Type . name Ġ+ Ġ"\ n rules :" Ġ+ Ġrules Ġ+ Ġ"\ n execute Type :" Ġ+ Ġexecute Type . name ĊĠĠĠĠĠĠĠ Ġcontainer ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ+= Ġ"\ nt imer Task [" Ġ+ Ġit . get Task Name () Ġ+ Ġ" ]\ n need Execute Immediate =" Ġ+ Ġit . need Execute Immediate ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġinfo ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® å®ļæĹ¶ ä»»åĬ¡ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtask Ġ ä»»åĬ¡ å¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Timer Task ( task : ĠBase AsyncTask ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( container Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" a ĠTimer Driver Ġcan Ġonly Ġreceive Ġone Ġtask ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtask . submit Time Ġ= ĠCommon Utils . get Now DateTime () ĊĠĠĠĠĠĠĠ Ġcontainer Ġ= ĠTimer Task Container ( task , Ġcircle Type , Ġrules , Ġexecute Type ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲ¯åĬ¨ å®ļæĹ¶ åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart Timer ( task : ĠBase AsyncTask ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( set Timer Task ( task )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Timer Task () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åģľæŃ¢ å®ļæĹ¶ åĻ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstop Timer () Ġ{ ĊĠĠĠĠĠĠĠ Ġshutdown () ĊĠĠĠĠĠĠĠ Ġlog . info (" stop Ġtimer Driver !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲ¯åĬ¨ å®ļæĹ¶ åĻ¨ , æī§è¡Į å®ļæĹ¶ ä»»åĬ¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrun Timer Task () Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . need Execute Immediate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . immediate Run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Ġ= ĠCalcul ation . get Timer Param ( circle Type , Ġrules ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule At Fixed Rate ( it , Ġparam [ 0 ], Ġparam [ 1 ], ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" start Ġtimer Task Ġsuccess Full :" Ġ+ Ġtimer Info ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . error ( e . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġstop Timer () ĊĠĠĠ Ġ} Ċ Ċ } Ċ