摘要:本人郵箱歡迎轉(zhuǎn)載轉(zhuǎn)載請(qǐng)注明網(wǎng)址代碼已經(jīng)全部托管有需要的同學(xué)自行下載引言提供的線程池還有一個(gè)那就是任務(wù)調(diào)度線程池它其實(shí)是的一個(gè)子類理論我們通過(guò)查看的源代碼可以發(fā)現(xiàn)的構(gòu)造器都是調(diào)用父類的構(gòu)造器只是它使用的工作隊(duì)列是通過(guò)名字我們都可以猜到這個(gè)是一
引言本人郵箱:
歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明網(wǎng)址 http://blog.csdn.net/tianshi_kco
github: https://github.com/kco1989/kco
代碼已經(jīng)全部托管github有需要的同學(xué)自行下載
java 提供的線程池還有一個(gè),那就是任務(wù)調(diào)度線程池ScheduledThreadPoolExecutor,它其實(shí)是ThreadPoolExecutor的一個(gè)子類.
理論我們通過(guò)查看ScheduledThreadPoolExecutor的源代碼,可以發(fā)現(xiàn)ScheduledThreadPoolExecutor的構(gòu)造器都是調(diào)用父類的構(gòu)造器,只是它使用的工作隊(duì)列是java.util.concurrent.ScheduledThreadPoolExecutor.DelayedWorkQueue通過(guò)名字我們都可以猜到這個(gè)是一個(gè)延時(shí)工作隊(duì)列.
因?yàn)?b>ScheduledThreadPoolExecutor的最大線程是Integer.MAX_VALUE,而且根據(jù)源碼可以看到execute和submit其實(shí)都是調(diào)用schedule這個(gè)方法,而且延時(shí)時(shí)間都是指定為0,所以調(diào)用execute和submit的任務(wù)都直接被執(zhí)行.
我們搞幾個(gè)延時(shí)炸彈,讓它們每個(gè)5s炸一次
public class TestMain { public static void main(String[] args) throws InterruptedException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ScheduledThreadPoolExecutor pool = new ScheduledThreadPoolExecutor(5); for (int i = 0; i < 5; i ++){ final int temp = i + 1; pool.schedule(() -> { System.out.println("第"+temp+"個(gè)炸彈爆炸時(shí)間:" + simpleDateFormat.format(new Date())); }, temp * 5, TimeUnit.SECONDS); } pool.shutdown(); System.out.println("end main時(shí)間:" + simpleDateFormat.format(new Date())); } }
運(yùn)行結(jié)果:
end main時(shí)間:2016-11-03 19:58:31
第1個(gè)炸彈爆炸時(shí)間:2016-11-03 19:58:36
第2個(gè)炸彈爆炸時(shí)間:2016-11-03 19:58:41
第3個(gè)炸彈爆炸時(shí)間:2016-11-03 19:58:46
第4個(gè)炸彈爆炸時(shí)間:2016-11-03 19:58:51
第5個(gè)炸彈爆炸時(shí)間:2016-11-03 19:58:56
ok,這個(gè)類相對(duì)比較簡(jiǎn)單,我就不多講了
后記在正在項(xiàng)目中,一般如果需要使用定時(shí)任務(wù),不會(huì)直接使用這個(gè)類的.有一個(gè)quartz已經(jīng)把定時(shí)任務(wù)封裝的很好了.它是通過(guò)cron表示時(shí),可以指定某一個(gè)任務(wù)每天執(zhí)行,或者每周三下午5點(diǎn)執(zhí)行.更多的資料可以去查百度.或者等以后有機(jī)會(huì)我再整理一寫(xiě)常用jar用法系列文章.就這樣了.
打賞如果覺(jué)得我的文章寫(xiě)的還過(guò)得去的話,有錢(qián)就捧個(gè)錢(qián)場(chǎng),沒(méi)錢(qián)給我捧個(gè)人場(chǎng)(幫我點(diǎn)贊或推薦一下)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76298.html
摘要:本人郵箱歡迎轉(zhuǎn)載轉(zhuǎn)載請(qǐng)注明網(wǎng)址代碼已經(jīng)全部托管有需要的同學(xué)自行下載引言提供的線程池還有一個(gè)那就是任務(wù)調(diào)度線程池它其實(shí)是的一個(gè)子類理論我們通過(guò)查看的源代碼可以發(fā)現(xiàn)的構(gòu)造器都是調(diào)用父類的構(gòu)造器只是它使用的工作隊(duì)列是通過(guò)名字我們都可以猜到這個(gè)是一 本人郵箱: 歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明網(wǎng)址 http://blog.csdn.net/tianshi_kcogithub: https://github...
摘要:線程的啟動(dòng)與銷毀都與本地線程同步。操作系統(tǒng)會(huì)調(diào)度所有線程并將它們分配給可用的??蚣艿某蓡T主要成員線程池接口接口接口以及工具類。創(chuàng)建單個(gè)線程的接口與其實(shí)現(xiàn)類用于表示異步計(jì)算的結(jié)果。參考書(shū)籍并發(fā)編程的藝術(shù)方騰飛魏鵬程曉明著 在java中,直接使用線程來(lái)異步的執(zhí)行任務(wù),線程的每次創(chuàng)建與銷毀需要一定的計(jì)算機(jī)資源開(kāi)銷。每個(gè)任務(wù)創(chuàng)建一個(gè)線程的話,當(dāng)任務(wù)數(shù)量多的時(shí)候,則對(duì)應(yīng)的創(chuàng)建銷毀開(kāi)銷會(huì)消耗大量...
摘要:深入理解線程池線程池初探所謂線程池,就是將多個(gè)線程放在一個(gè)池子里面所謂池化技術(shù),然后需要線程的時(shí)候不是創(chuàng)建一個(gè)線程,而是從線程池里面獲取一個(gè)可用的線程,然后執(zhí)行我們的任務(wù)。最后的的意思是需要確保線程池已經(jīng)被啟動(dòng)起來(lái)了。 深入理解Java線程池 線程池初探 ?所謂線程池,就是將多個(gè)線程放在一個(gè)池子里面(所謂池化技術(shù)),然后需要線程的時(shí)候不是創(chuàng)建一個(gè)線程,而是從線程池里面獲取一個(gè)可用的線程...
摘要:一使用線程池的好處線程池提供了一種限制和管理資源包括執(zhí)行一個(gè)任務(wù)。每個(gè)線程池還維護(hù)一些基本統(tǒng)計(jì)信息,例如已完成任務(wù)的數(shù)量。通過(guò)重復(fù)利用已創(chuàng)建的線程降低線程創(chuàng)建和銷毀造成的消耗。使用無(wú)界隊(duì)列作為線程池的工作隊(duì)列會(huì)對(duì)線程池帶來(lái)的影響與相同。 歷史優(yōu)質(zhì)文章推薦: Java并發(fā)編程指南專欄 分布式系統(tǒng)的經(jīng)典基礎(chǔ)理論 可能是最漂亮的Spring事務(wù)管理詳解 面試中關(guān)于Java虛擬機(jī)(jvm)的問(wèn)...
摘要:在前面介紹了的多線程的基本原理信息線程池架構(gòu)原理和源碼解析,本文對(duì)這個(gè)本身的線程池的調(diào)度器做一個(gè)簡(jiǎn)單擴(kuò)展,如果還沒(méi)讀過(guò)上一篇文章,建議讀一下,因?yàn)檫@是調(diào)度器的核心組件部分。 在前面介紹了java的多線程的基本原理信息:《Java線程池架構(gòu)原理和源碼解析》,本文對(duì)這個(gè)java本身的線程池的調(diào)度器做一個(gè)簡(jiǎn)單擴(kuò)展,如果還沒(méi)讀過(guò)上一篇文章,建議讀一下,因?yàn)檫@是調(diào)度器的核心組件部分。 我們?nèi)绻?..
閱讀 1813·2021-11-22 09:34
閱讀 3097·2019-08-30 15:55
閱讀 676·2019-08-30 15:53
閱讀 2067·2019-08-30 15:52
閱讀 3009·2019-08-29 18:32
閱讀 1999·2019-08-29 17:15
閱讀 2405·2019-08-29 13:14
閱讀 3566·2019-08-28 18:05