spring進(jìn)階教程(二):異步執(zhí)行任務(wù)

前言

實(shí)際開發(fā)中,大多數(shù)的service都是同步執(zhí)行并返回的雾消,但有些特殊情況,我們是不需要馬上得到返回結(jié)果挫望,例如:數(shù)據(jù)量較大的報(bào)表統(tǒng)計(jì)立润,可能會(huì)執(zhí)行一兩個(gè)小時(shí),我們只需要開一個(gè)異步任務(wù)即可媳板,spring也為我們提供了這樣的方式桑腮,下面我們來看一看他的實(shí)現(xiàn)

參考項(xiàng)目:https://github.com/bigbeef/cppba-sample
開源地址:https://github.com/bigbeef
個(gè)人博客:http://blog.cppba.com

注意:框架采用spring-boot,配置和啟動(dòng)類就不列出了蛉幸,需要了解的可以看下面的參考項(xiàng)目破讨,下面只提供核心代碼

StartService.java

package com.cppba.service;

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

@Service
public class StartService {

    @Async
    public void taskSayHi(Integer i) {
        System.out.println("hi! No. " + i + "!");
    }

    @Async
    public void taskSayHello(Integer i) {
        System.out.println("hello! No. " + i + "!");
    }
}

StartController.java

package com.cppba.controller;

import com.cppba.service.StartService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@EnableAsync
public class StartController {

    @Autowired
    private StartService startService;

    @RequestMapping("/start")
    @ResponseBody
    public String start(){
        Integer count = 10;
        for (Integer i = 1; i <= count; i++) {
            startService.taskSayHi(i);
            startService.taskSayHello(i);
        }
        return "success";
    }
}

運(yùn)行項(xiàng)目

項(xiàng)目啟動(dòng),瀏覽器訪問http://127.0.0.1:8080/start,控制臺(tái)打印出一下內(nèi)容:

No.1,hello!
No.10,hi!
No.7,hi!
No.8,hello!
No.6,hi!
No.10,hello!
No.7,hello!
No.5,hi!
No.1,hi!
No.6,hello!
No.4,hi!
No.8,hi!
No.5,hello!
No.3,hi!
No.9,hello!
No.4,hello!
No.2,hi!
No.9,hi!
No.3,hello!
No.2,hello!

很明顯奕纫,程序并沒有按照我們的調(diào)用順序執(zhí)行提陶,說明我們的異步服務(wù)開啟成功!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匹层,一起剝皮案震驚了整個(gè)濱河市隙笆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌升筏,老刑警劉巖撑柔,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異您访,居然都是意外死亡铅忿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門灵汪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來檀训,“玉大人柑潦,你說我怎么就攤上這事≈叮” “怎么了妒茬?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蔚晨。 經(jīng)常有香客問我,道長肛循,這世上最難降的妖魔是什么铭腕? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮多糠,結(jié)果婚禮上累舷,老公的妹妹穿的比我還像新娘。我一直安慰自己夹孔,他們只是感情好被盈,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搭伤,像睡著了一般只怎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怜俐,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天身堡,我揣著相機(jī)與錄音,去河邊找鬼拍鲤。 笑死贴谎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的季稳。 我是一名探鬼主播擅这,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼景鼠!你這毒婦竟也來了仲翎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤莲蜘,失蹤者是張志新(化名)和其女友劉穎谭确,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體票渠,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逐哈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了问顷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昂秃。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡禀梳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肠骆,到底是詐尸還是另有隱情算途,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布蚀腿,位于F島的核電站嘴瓤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏莉钙。R本人自食惡果不足惜廓脆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望磁玉。 院中可真熱鬧停忿,春花似錦、人聲如沸蚊伞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽时迫。三九已至颅停,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間别垮,已是汗流浹背便监。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碳想,地道東北人烧董。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像胧奔,于是被迫代替她去往敵國和親逊移。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理龙填,服務(wù)發(fā)現(xiàn)胳泉,斷路器,智...
    卡卡羅2017閱讀 134,717評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,867評(píng)論 6 342
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,336評(píng)論 25 707
  • 顯現(xiàn)-練習(xí)——使用 我行岩遗,一切行扇商,我行任之行 選好人,做對(duì)事 懂人事 體驗(yàn)價(jià)值從滿足身邊人的需求開始 日精進(jìn)第...
    于英彬閱讀 132評(píng)論 0 0
  • 一部電影的好壞宿礁,由許多方面所決定案铺,比如攝影、劇本梆靖、演員控汉、價(jià)值觀笔诵,思想等等。而在我心中姑子,所謂一部“好”電影乎婿,更應(yīng)該看...
    土豆有時(shí)說閱讀 387評(píng)論 0 0