在工作之余平時(shí)看到好的博客粗略看下之后收藏起來(lái)添加書簽杨箭,但過(guò)后總是沒(méi)去看,等到有需要的時(shí)候再去看估計(jì)也忘記了筝闹,這樣子一遍好的博客的精髓就沒(méi)有學(xué)習(xí)到奥邮,所以看到好的文章自己記錄下來(lái)也是挺有必要的。
首先我們來(lái)說(shuō)下普通隊(duì)列,普通隊(duì)列的實(shí)現(xiàn)主要理解三個(gè)概念:
1枫弟,任務(wù)(Task):就是你要做的事情
2邢享,隊(duì)列(Queue):存放任務(wù)的空間
3,任務(wù)執(zhí)行器(TaskExecutor):從隊(duì)列中取出任務(wù)來(lái)執(zhí)行
那么接下來(lái)我們就實(shí)現(xiàn)一下普通隊(duì)列的代碼吧:
1)定義一個(gè)任務(wù)的接口 ITask淡诗,為什么要定義成接口呢骇塘,這是方便我們可以想做不同的事,之后只要實(shí)現(xiàn)了這個(gè)接口就行韩容。
2)接下來(lái)再寫一個(gè)TaskExecutor(任務(wù)執(zhí)行器)款违,用來(lái)從Queue(隊(duì)列)中取出Task(任務(wù))來(lái)執(zhí)行。
3)任務(wù)和任務(wù)執(zhí)行器都有了萍虽,接下來(lái)我們封裝一個(gè)隊(duì)列,方便與管理形真。(任務(wù)執(zhí)行器可以是多個(gè))
4)這些都準(zhǔn)備好了,接下來(lái)我們?nèi)?shí)現(xiàn)自己的任務(wù),舉個(gè)簡(jiǎn)單的例子打印
5)接下來(lái)執(zhí)行
結(jié)果:
6)接下來(lái)我們開(kāi)多個(gè)任務(wù)執(zhí)行器來(lái)執(zhí)行:
結(jié)果:
其實(shí)可以這樣說(shuō)邓馒,當(dāng)我們初始化了三個(gè)任務(wù)執(zhí)行器的時(shí)候,第一個(gè)任務(wù)在執(zhí)行器1蛾坯,第二個(gè)任務(wù)在執(zhí)行器2光酣,第三個(gè)任務(wù)在執(zhí)行器3,接下來(lái)當(dāng)那個(gè)執(zhí)行器先執(zhí)行完任務(wù)的時(shí)候脉课,隊(duì)列中取出來(lái)的任務(wù)就會(huì)在那個(gè)執(zhí)行器去執(zhí)行救军,用一副圖理解下
好了,普通隊(duì)列的實(shí)現(xiàn)就寫到這里了倘零,也感覺(jué)不是那么難唱遭,
關(guān)于隊(duì)列一些概念大家可以參考接下來(lái)這邊文章:
本文中普通隊(duì)列的實(shí)現(xiàn)是參考這位大神的文章,雖然代碼一樣但是學(xué)習(xí)到了自己記錄下也是好的(希望別吐槽):