国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

(二十)java多線程之ScheduledThreadPoolExecutor

lentrue / 401人閱讀

摘要:本人郵箱歡迎轉(zhuǎn)載轉(zhuǎn)載請注明網(wǎng)址代碼已經(jīng)全部托管有需要的同學(xué)自行下載引言提供的線程池還有一個那就是任務(wù)調(diào)度線程池它其實是的一個子類理論我們通過查看的源代碼可以發(fā)現(xiàn)的構(gòu)造器都是調(diào)用父類的構(gòu)造器只是它使用的工作隊列是通過名字我們都可以猜到這個是一

本人郵箱:
歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明網(wǎng)址 http://blog.csdn.net/tianshi_kco
github: https://github.com/kco1989/kco
代碼已經(jīng)全部托管github有需要的同學(xué)自行下載

引言

java 提供的線程池還有一個,那就是任務(wù)調(diào)度線程池ScheduledThreadPoolExecutor,它其實是ThreadPoolExecutor的一個子類.

理論

我們通過查看ScheduledThreadPoolExecutor的源代碼,可以發(fā)現(xiàn)ScheduledThreadPoolExecutor的構(gòu)造器都是調(diào)用父類的構(gòu)造器,只是它使用的工作隊列是java.util.concurrent.ScheduledThreadPoolExecutor.DelayedWorkQueue通過名字我們都可以猜到這個是一個延時工作隊列.
因為ScheduledThreadPoolExecutor的最大線程是Integer.MAX_VALUE,而且根據(jù)源碼可以看到executesubmit其實都是調(diào)用schedule這個方法,而且延時時間都是指定為0,所以調(diào)用executesubmit的任務(wù)都直接被執(zhí)行.

例子 搞幾個延時炸彈

我們搞幾個延時炸彈,讓它們每個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+"個炸彈爆炸時間:" + simpleDateFormat.format(new Date()));
            }, temp * 5, TimeUnit.SECONDS);
        }
        pool.shutdown();
        System.out.println("end main時間:" + simpleDateFormat.format(new Date()));
    }
}

運(yùn)行結(jié)果:

end main時間:2016-11-03 19:58:31
第1個炸彈爆炸時間:2016-11-03 19:58:36
第2個炸彈爆炸時間:2016-11-03 19:58:41
第3個炸彈爆炸時間:2016-11-03 19:58:46
第4個炸彈爆炸時間:2016-11-03 19:58:51
第5個炸彈爆炸時間:2016-11-03 19:58:56

ok,這個類相對比較簡單,我就不多講了

后記

在正在項目中,一般如果需要使用定時任務(wù),不會直接使用這個類的.有一個quartz已經(jīng)把定時任務(wù)封裝的很好了.它是通過cron表示時,可以指定某一個任務(wù)每天執(zhí)行,或者每周三下午5點執(zhí)行.更多的資料可以去查百度.或者等以后有機(jī)會我再整理一寫常用jar用法系列文章.就這樣了.

打賞

如果覺得我的文章寫的還過得去的話,有錢就捧個錢場,沒錢給我捧個人場(幫我點贊或推薦一下)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/76298.html

相關(guān)文章

  • (二十)java線程ScheduledThreadPoolExecutor

    摘要:本人郵箱歡迎轉(zhuǎn)載轉(zhuǎn)載請注明網(wǎng)址代碼已經(jīng)全部托管有需要的同學(xué)自行下載引言提供的線程池還有一個那就是任務(wù)調(diào)度線程池它其實是的一個子類理論我們通過查看的源代碼可以發(fā)現(xiàn)的構(gòu)造器都是調(diào)用父類的構(gòu)造器只是它使用的工作隊列是通過名字我們都可以猜到這個是一 本人郵箱: 歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明網(wǎng)址 http://blog.csdn.net/tianshi_kcogithub: https://github...

    pkwenda 評論0 收藏0
  • 初讀《Java并發(fā)編程的藝術(shù)》-第十章:Executor框架 -10.1 Executor框架簡介

    摘要:線程的啟動與銷毀都與本地線程同步。操作系統(tǒng)會調(diào)度所有線程并將它們分配給可用的。框架的成員主要成員線程池接口接口接口以及工具類。創(chuàng)建單個線程的接口與其實現(xiàn)類用于表示異步計算的結(jié)果。參考書籍并發(fā)編程的藝術(shù)方騰飛魏鵬程曉明著 在java中,直接使用線程來異步的執(zhí)行任務(wù),線程的每次創(chuàng)建與銷毀需要一定的計算機(jī)資源開銷。每個任務(wù)創(chuàng)建一個線程的話,當(dāng)任務(wù)數(shù)量多的時候,則對應(yīng)的創(chuàng)建銷毀開銷會消耗大量...

    aisuhua 評論0 收藏0
  • 深入理解Java線程

    摘要:深入理解線程池線程池初探所謂線程池,就是將多個線程放在一個池子里面所謂池化技術(shù),然后需要線程的時候不是創(chuàng)建一個線程,而是從線程池里面獲取一個可用的線程,然后執(zhí)行我們的任務(wù)。最后的的意思是需要確保線程池已經(jīng)被啟動起來了。 深入理解Java線程池 線程池初探 ?所謂線程池,就是將多個線程放在一個池子里面(所謂池化技術(shù)),然后需要線程的時候不是創(chuàng)建一個線程,而是從線程池里面獲取一個可用的線程...

    fredshare 評論0 收藏0
  • Java線程學(xué)習(xí)(八)線程池與Executor 框架

    摘要:一使用線程池的好處線程池提供了一種限制和管理資源包括執(zhí)行一個任務(wù)。每個線程池還維護(hù)一些基本統(tǒng)計信息,例如已完成任務(wù)的數(shù)量。通過重復(fù)利用已創(chuàng)建的線程降低線程創(chuàng)建和銷毀造成的消耗。使用無界隊列作為線程池的工作隊列會對線程池帶來的影響與相同。 歷史優(yōu)質(zhì)文章推薦: Java并發(fā)編程指南專欄 分布式系統(tǒng)的經(jīng)典基礎(chǔ)理論 可能是最漂亮的Spring事務(wù)管理詳解 面試中關(guān)于Java虛擬機(jī)(jvm)的問...

    cheng10 評論0 收藏0
  • Java線程池架構(gòu)(二)線程調(diào)度器

    摘要:在前面介紹了的多線程的基本原理信息線程池架構(gòu)原理和源碼解析,本文對這個本身的線程池的調(diào)度器做一個簡單擴(kuò)展,如果還沒讀過上一篇文章,建議讀一下,因為這是調(diào)度器的核心組件部分。 在前面介紹了java的多線程的基本原理信息:《Java線程池架構(gòu)原理和源碼解析》,本文對這個java本身的線程池的調(diào)度器做一個簡單擴(kuò)展,如果還沒讀過上一篇文章,建議讀一下,因為這是調(diào)度器的核心組件部分。 我們?nèi)绻?..

    SmallBoyO 評論0 收藏0

發(fā)表評論

0條評論

lentrue

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<