摘要:創(chuàng)建一個(gè)定長(zhǎng)線(xiàn)程池,可控制線(xiàn)程最大并發(fā)數(shù),超出的線(xiàn)程會(huì)在隊(duì)列中等待。創(chuàng)建一個(gè)定長(zhǎng)線(xiàn)程池,支持定時(shí)及周期性任務(wù)執(zhí)行。
ExecutorService是Java中對(duì)線(xiàn)程池定義的一個(gè)接口,它java.util.concurrent包中.
創(chuàng)建一個(gè)什么樣的ExecutorService的實(shí)例(即線(xiàn)程池)需要g根據(jù)具體應(yīng)用場(chǎng)景而定,不過(guò)Java給我們提供了一個(gè)Executors工廠(chǎng)類(lèi),它可以幫助我們很方便的創(chuàng)建各種類(lèi)型ExecutorService線(xiàn)程池,Executors一共可以創(chuàng)建下面這四類(lèi)線(xiàn)程池:
newCachedThreadPool 創(chuàng)建一個(gè)可緩存線(xiàn)程池,如果線(xiàn)程池長(zhǎng)度超過(guò)處理需要,可靈活回收空閑線(xiàn)程,若無(wú)可回收,則新建線(xiàn)程。
newFixedThreadPool 創(chuàng)建一個(gè)定長(zhǎng)線(xiàn)程池,可控制線(xiàn)程最大并發(fā)數(shù),超出的線(xiàn)程會(huì)在隊(duì)列中等待。
newScheduledThreadPool 創(chuàng)建一個(gè)定長(zhǎng)線(xiàn)程池,支持定時(shí)及周期性任務(wù)執(zhí)行。
newSingleThreadExecutor 創(chuàng)建一個(gè)單線(xiàn)程化的線(xiàn)程池,它只會(huì)用唯一的工作線(xiàn)程來(lái)執(zhí)行任務(wù),保證所有任務(wù)按照指定順序(FIFO, LIFO, 優(yōu)先級(jí))執(zhí)行。
注:Executors只是一個(gè)工廠(chǎng)類(lèi),它所有的方法返回的都是ThreadPoolExecutor、ScheduledThreadPoolExecutor這兩個(gè)類(lèi)的實(shí)例。
簡(jiǎn)單使用
ExecutorService executorService = Executors.newFixedThreadPool(10); executorService.execute(new Runnable() { public void run() { System.out.println("Asynchronous task"); } }); executorService.shutdown();
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67646.html
摘要:線(xiàn)程池主要解決兩個(gè)問(wèn)題一是當(dāng)執(zhí)行大量異步任務(wù)時(shí)線(xiàn)程池能夠提供很好的性能。二是線(xiàn)程池提供了一種資源限制和管理的手段,比如可以限制現(xiàn)成的個(gè)數(shù),動(dòng)態(tài)新增線(xiàn)程等。該方法返回一個(gè)對(duì)象,可指定線(xiàn)程池線(xiàn)程數(shù)量。 什么是線(xiàn)程池? 為了避免頻繁重復(fù)的創(chuàng)建和銷(xiāo)毀線(xiàn)程,我們可以讓這些線(xiàn)程進(jìn)行復(fù)用,在線(xiàn)程池中,總會(huì)有活躍的線(xiàn)程在占用,但是線(xiàn)程池中也會(huì)存在沒(méi)有占用的線(xiàn)程,這些線(xiàn)程處于空閑狀態(tài),當(dāng)有任務(wù)的時(shí)候會(huì)從...
摘要:用于限定中線(xiàn)程數(shù)的最大值。該線(xiàn)程池中的任務(wù)隊(duì)列維護(hù)著等待執(zhí)行的對(duì)象。線(xiàn)程池和消息隊(duì)列筆者在實(shí)際工程應(yīng)用中,使用過(guò)多線(xiàn)程和消息隊(duì)列處理過(guò)異步任務(wù)。以上是筆者在學(xué)習(xí)實(shí)踐之后對(duì)于多線(xiàn)程和消息隊(duì)列的粗淺認(rèn)識(shí),初學(xué)者切莫混淆兩者的作用。 多線(xiàn)程編程很難,難點(diǎn)在于多線(xiàn)程代碼的執(zhí)行不是按照我們直覺(jué)上的執(zhí)行順序。所以多線(xiàn)程編程必須要建立起一個(gè)宏觀的認(rèn)識(shí)。 線(xiàn)程池是多線(xiàn)程編程中的一個(gè)重要概念。為了能夠更...
線(xiàn)程池ExecutorService 一. new Thread的弊端 執(zhí)行一個(gè)異步任務(wù)你還只是如下new Thread嗎? new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 那你就太out了,...
摘要:本文主要內(nèi)容為簡(jiǎn)單總結(jié)中線(xiàn)程池的相關(guān)信息。方法簇方法簇用于創(chuàng)建固定線(xiàn)程數(shù)的線(xiàn)程池。三種常見(jiàn)線(xiàn)程池的對(duì)比上文總結(jié)了工具類(lèi)創(chuàng)建常見(jiàn)線(xiàn)程池的方法,現(xiàn)對(duì)三種線(xiàn)程池區(qū)別進(jìn)行比較。 概述 線(xiàn)程可認(rèn)為是操作系統(tǒng)可調(diào)度的最小的程序執(zhí)行序列,一般作為進(jìn)程的組成部分,同一進(jìn)程中多個(gè)線(xiàn)程可共享該進(jìn)程的資源(如內(nèi)存等)。在單核處理器架構(gòu)下,操作系統(tǒng)一般使用分時(shí)的方式實(shí)現(xiàn)多線(xiàn)程;在多核處理器架構(gòu)下,多個(gè)線(xiàn)程能夠...
摘要:以下拋異常,因?yàn)榫€(xiàn)程池都沒(méi)了線(xiàn)程池之后提供的線(xiàn)程池的工廠(chǎng)類(lèi)用來(lái)生成線(xiàn)程池類(lèi)中的靜態(tài)方法創(chuàng)建一個(gè)可重用固定線(xiàn)程數(shù)的線(xiàn)程池參數(shù)創(chuàng)建線(xiàn)程池中包含的線(xiàn)程數(shù)量返回值接口返回的是接口的實(shí)現(xiàn)類(lèi)對(duì)象我們可以使用接口接收面向接口編程線(xiàn)程池接口用來(lái)從線(xiàn)程池中獲 showImg(https://segmentfault.com/img/bVbv8Fz?w=1382&h=891); showImg(https...
閱讀 3647·2023-04-26 02:32
閱讀 3947·2021-11-23 10:05
閱讀 2304·2021-10-08 10:04
閱讀 2731·2021-09-22 16:06
閱讀 3626·2021-09-22 15:27
閱讀 776·2019-08-30 15:54
閱讀 1728·2019-08-30 13:50
閱讀 2713·2019-08-29 13:56