這篇文章給大家介紹java中怎么實(shí)現(xiàn)線(xiàn)程池,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
成都創(chuàng)新互聯(lián)擁有10多年成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),對(duì)于網(wǎng)頁(yè)設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、手機(jī)APP定制開(kāi)發(fā)、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開(kāi)發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、域名注冊(cè)等,憑借多年來(lái)在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷(xiāo)經(jīng)驗(yàn),集策劃、開(kāi)發(fā)、設(shè)計(jì)、營(yíng)銷(xiāo)、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類(lèi)型的網(wǎng)站建設(shè)項(xiàng)目的能力。
:
1、newCachedThreadPool()
它是用來(lái)處理大量短時(shí)間工作任務(wù)的線(xiàn)程池,具有幾個(gè)鮮明特點(diǎn):它會(huì)試圖緩存線(xiàn)程并重用,當(dāng)無(wú)緩存線(xiàn)程可用時(shí),就會(huì)創(chuàng)建新的工作線(xiàn)程;如果線(xiàn)程閑置時(shí)間超過(guò)60秒,則被終止并移除緩存;長(zhǎng)時(shí)間閑置時(shí),這種線(xiàn)程池,不會(huì)消耗什么資源。其內(nèi)部使用SynchronousQueue作為工作隊(duì)列。
2、newFixedThreadPool(int nThreads)
重用指定數(shù)目(nThreads)的線(xiàn)程,其背后使用的是無(wú)界的工作隊(duì)列,任何時(shí)候最多有nThreads個(gè)工作線(xiàn)程是活動(dòng)的。這意味著,如果任務(wù)數(shù)量超過(guò)了活動(dòng)線(xiàn)程數(shù)目,將在工作隊(duì)列中等待空閑線(xiàn)程出現(xiàn);如果工作線(xiàn)程退出,將會(huì)有新的工作線(xiàn)程被創(chuàng)建,以補(bǔ)足指定數(shù)目nThreads。
3、newSingleThreadExecutor()
它的特點(diǎn)在于工作線(xiàn)程數(shù)目限制為1,操作一個(gè)無(wú)界的工作隊(duì)列,所以它保證了所有的任務(wù)都是被順序執(zhí)行,最多會(huì)有一個(gè)任務(wù)處于活動(dòng)狀態(tài),并且不予許使用者改動(dòng)線(xiàn)程池實(shí)例,因此可以避免改變線(xiàn)程數(shù)目。
4、newSingleThreadScheduledExecutor()和newScheduledThreadPool(int corePoolSize)
創(chuàng)建的是個(gè)ScheduledExecutorService,可以進(jìn)行定時(shí)或周期性的工作調(diào)度,區(qū)別在于單一工作線(xiàn)程還是多個(gè)工作線(xiàn)程。
5、newWorkStealingPool(int parallelism)
這是一個(gè)經(jīng)常被人忽略的線(xiàn)程池,Java 8 才加入這個(gè)創(chuàng)建方法,其內(nèi)部會(huì)構(gòu)建ForkJoinPool,利用Work-Stealing算法,并行地處理任務(wù),不保證處理順序。
內(nèi)容擴(kuò)展:
java通過(guò)Executors工廠類(lèi)提供我們的線(xiàn)程池一共有4種:
fixedThreadPool() //啟動(dòng)固定線(xiàn)程數(shù)的線(xiàn)程池
CachedThreadPool() //按需分配的線(xiàn)程池
ScheduledThreadPoolExecutor()//定時(shí),定期執(zhí)行任務(wù)的線(xiàn)程池
ThreadPoolExecutor()//指定線(xiàn)程數(shù)的線(xiàn)程池。
關(guān)于java中怎么實(shí)現(xiàn)線(xiàn)程池就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。