Springboot 技術整合--筆記4--定時任務&異步任務

Springboot整合定時任務Task

涉及到的知識點

  • @EnableScheduling //開啟定時任務
  • @Scheduled(fixedRate = 3000) //注解頻率
  • cron表達式 //參見:http://cron.qqe2.com/

在application的啟動類添加@EnableScheduling注解油啤,開啟定時任務敷矫,會自動掃描

//開啟定時任務
@EnableScheduling
application開啟任務注解

定義@Component作為組件和和@Scheduled注解被容器掃描

測試定時任務TestTask.java

@Component
public class TestTask {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    // 定義每過3秒執(zhí)行任務
  @Scheduled(fixedRate = 3000)  //每隔3秒執(zhí)行
//  @Scheduled(cron = "4-40 * * * * ?")  //定時任務--4秒~40秒結束,每分鐘重復
    public void reportCurrentTime() {
        System.out.println("現(xiàn)在時間:" + dateFormat.format(new Date()));
    }
}

每隔3秒打印情況

定時任務表達式的簡單講解與應用

springboot的cron不支持年撒轮,所有只有6位
cron表達式的自動生成:http://cron.qqe2.com/

cron表達式自動生成


Springboot整合--異步任務

在application的啟動類添加@EnableAsync注解,開啟異步任務

//開啟異步調(diào)用方法
@EnableAsync

定義@Component和作為組件和@Async注解被容器掃描

異步任務AsyncTask.java


@Component
public class AsyncTask {
    
    @Async
    public Future<Boolean> doTask11() throws Exception {
        long start = System.currentTimeMillis();
        Thread.sleep(1000);
        long end = System.currentTimeMillis();
        System.out.println("任務1耗時:" + (end - start) + "毫秒");
        return new AsyncResult<>(true);  //表示異步任務完成
    }
    
    @Async
    public Future<Boolean> doTask22() throws Exception {
        long start = System.currentTimeMillis();
        Thread.sleep(700);
        long end = System.currentTimeMillis();
        System.out.println("任務2耗時:" + (end - start) + "毫秒");
        return new AsyncResult<>(true);
    }
    
    @Async
    public Future<Boolean> doTask33() throws Exception {
        long start = System.currentTimeMillis();
        Thread.sleep(600);
        long end = System.currentTimeMillis();
        System.out.println("任務3耗時:" + (end - start) + "毫秒");
        return new AsyncResult<>(true); 
    }
}

調(diào)用異步任務的Controller

@RestController
@RequestMapping("tasks")
public class DoTask {
    
    @Autowired
    private AsyncTask asyncTask;  //異步任務注入
    
    @RequestMapping("test1")
    public String test1() throws Exception {
        
        long start = System.currentTimeMillis();
        
        Future<Boolean> a = asyncTask.doTask11(); //調(diào)用異步任務11
        Future<Boolean> b = asyncTask.doTask22(); //調(diào)用異步任務22
        Future<Boolean> c = asyncTask.doTask33(); //調(diào)用異步任務33
        
        while (!a.isDone() || !b.isDone() || !c.isDone()) { //用于判斷異步任務是否完成
            if (a.isDone() && b.isDone() && c.isDone()) {
                break;
            }
        }
        
        long end = System.currentTimeMillis();
        
        String times = "任務全部完成利耍,總耗時:" + (end - start) + "毫秒";
        System.out.println(times);
        
        return times;
    }
}

啟動項目測試

http://localhost:8080/tasks/test1

會發(fā)現(xiàn)是否開啟@EnableAsync注解執(zhí)行時間是不一樣

沒用注解@EnableAsync任務執(zhí)行情況

開啟異步的結果

異步任務的使用場景

  • 數(shù)據(jù)清算(如證券交易的清算)
  • 違規(guī)處理(如微信號違規(guī)分析)
  • 發(fā)送短息
  • 發(fā)送郵件
  • app推送
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笔刹,一起剝皮案震驚了整個濱河市囱持,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闲擦,老刑警劉巖慢味,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異墅冷,居然都是意外死亡贮缕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門俺榆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來感昼,“玉大人,你說我怎么就攤上這事罐脊《ㄉぃ” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵萍桌,是天一觀的道長宵溅。 經(jīng)常有香客問我,道長上炎,這世上最難降的妖魔是什么恃逻? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任雏搂,我火速辦了婚禮,結果婚禮上寇损,老公的妹妹穿的比我還像新娘凸郑。我一直安慰自己,他們只是感情好矛市,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布芙沥。 她就那樣靜靜地躺著,像睡著了一般浊吏。 火紅的嫁衣襯著肌膚如雪而昨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天找田,我揣著相機與錄音歌憨,去河邊找鬼。 笑死墩衙,一個胖子當著我的面吹牛务嫡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播底桂,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼植袍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了籽懦?” 一聲冷哼從身側(cè)響起于个,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎暮顺,沒想到半個月后厅篓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡捶码,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年羽氮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惫恼。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡档押,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出祈纯,到底是詐尸還是另有隱情令宿,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布腕窥,位于F島的核電站粒没,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏簇爆。R本人自食惡果不足惜癞松,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一爽撒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧响蓉,春花似錦硕勿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挑庶。三九已至言秸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迎捺,已是汗流浹背举畸。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凳枝,地道東北人抄沮。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像岖瑰,于是被迫代替她去往敵國和親叛买。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一點知識 在JAVA開發(fā)領域蹋订,目前可以通過以下幾種方式進行定時任務: Timer:jdk中自帶的一個定時調(diào)度類率挣,可...
    雅倩蘭爸爸閱讀 3,841評論 1 28
  • 來源::http://www.wanqhblog.top/2018/02/01/SpringBootTaskSch...
    程序員BUG閱讀 2,037評論 0 49
  • 閱讀正文: 回到頂部 序言 使用SpringBoot創(chuàng)建定時任務非常簡單,目前主要有以下三種創(chuàng)建方式: 一露戒、基于注...
    干凈_79db閱讀 317評論 0 0
  • 上周五下午下班回家時椒功,他爸竟然早到家了,家里廚房里是一片繁忙的景象智什,各種好吃準備就緒动漾,只等下鍋。我詫異地問...
    紅粉輕盈閱讀 513評論 2 5
  • 秋風送爽荠锭,金桂飄香旱眯。又是中秋,又見明月证九。中秋夜的月格外皎潔明亮删豺。一輪明月白玉盤似的將清輝灑滿人間。仰望蒼穹甫贯,皓月當...
    江玥居士閱讀 713評論 2 10