培訓(xùn):JAVA培訓(xùn)-平面設(shè)計(jì)-互聯(lián)網(wǎng)營(yíng)銷(xiāo)-少兒編程-企業(yè)內(nèi)訓(xùn)
導(dǎo)語(yǔ)
Java基礎(chǔ)知識(shí)——Java線(xiàn)程池,隨著互聯(lián)網(wǎng)的發(fā)達(dá),越來(lái)越多人開(kāi)始投身于計(jì)算機(jī)編程行業(yè),今天由杭州中公教育的小編為大家?guī)?lái)Java線(xiàn)程池的相關(guān)知識(shí),供大家參考
Java線(xiàn)程池 多線(xiàn)程是為了能夠讓計(jì)算機(jī)資源合理的分配,對(duì)于處理不同的任務(wù)創(chuàng)建不同的線(xiàn)程進(jìn)行處理,但是計(jì)算機(jī)創(chuàng)建一個(gè)線(xiàn)程或者銷(xiāo)毀一個(gè)線(xiàn)程所花費(fèi)的也是比較昂貴的,有時(shí)候需要同時(shí)處理的事情比較多,就需要我們頻繁的進(jìn)行線(xiàn)程的創(chuàng)建和銷(xiāo)毀,這樣花費(fèi)的時(shí)間也是比較多的。為了解決這一問(wèn)題,我們就可以引用線(xiàn)程池的概念。 所謂線(xiàn)程池就是將線(xiàn)程集中管理起來(lái),當(dāng)需要線(xiàn)程的時(shí)候,可以從線(xiàn)程池中獲取空閑的線(xiàn)程,這樣可以減少線(xiàn)程的頻繁創(chuàng)建與銷(xiāo)毀,節(jié)省很大的時(shí)間和減少很多不必要的操作。 在java中提供了ThreadPoolExecutor類(lèi)來(lái)進(jìn)行線(xiàn)程的管理,這個(gè)類(lèi)繼承于AbstractExecutorService,而AbstractExecutorService實(shí)現(xiàn)了ExecutorService接口,我們可以使用ThreadPoolExecutor來(lái)進(jìn)行線(xiàn)程池的創(chuàng)建。 在ThreadPoolExecutor的構(gòu)造方法中,有多個(gè)參數(shù),可以配置不同的參數(shù)來(lái)進(jìn)行優(yōu)化。這個(gè)類(lèi)的源碼構(gòu)造方法為: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)其中每個(gè)參數(shù)代表的意義分別為 corePoolSize : 線(xiàn)程池中的核心線(xiàn)程數(shù)量,當(dāng)線(xiàn)程池中當(dāng)前的線(xiàn)程數(shù)小于這個(gè)配置的時(shí)候,如果有一個(gè)新的任務(wù)到來(lái),即使線(xiàn)程池中還存在空閑狀態(tài)的線(xiàn)程,程序也會(huì)繼續(xù)創(chuàng)建一個(gè)新的線(xiàn)程放進(jìn)線(xiàn)程池當(dāng)中 maximumPoolSize: 線(xiàn)程池中的線(xiàn)程最大數(shù)量 keepAliveTime:當(dāng)線(xiàn)程池中的線(xiàn)程數(shù)量大于配置的核心線(xiàn)程數(shù)量(corePoolSize)的時(shí)候,如果當(dāng)前有空閑的線(xiàn)程,則當(dāng)這個(gè)空閑線(xiàn)程可以存在的時(shí)間,如果在keepAliveTime這個(gè)時(shí)間點(diǎn)內(nèi)沒(méi)有新的任務(wù)使用這個(gè)線(xiàn)程,那么這個(gè)線(xiàn)程將會(huì)結(jié)束,核心線(xiàn)程不會(huì)結(jié)束,但是如果配置了allowCoreThreadTimeOut = true,則當(dāng)空閑時(shí)間超過(guò)keepAliveTime之后,線(xiàn)程也會(huì)被結(jié)束調(diào),默認(rèn)allowCoreThreadTimeOut = false,即表示默認(rèn)情況下,核心線(xiàn)程會(huì)一直存在于線(xiàn)程池當(dāng)中。 unit : 空閑線(xiàn)程保持連接時(shí)間(keepAliveTime)的時(shí)間單位 workQueue:阻塞的任務(wù)隊(duì)列,用來(lái)保存等待需要執(zhí)行的任務(wù)。 threadFactory :線(xiàn)程工廠(chǎng),可以根據(jù)自己的需求去創(chuàng)建線(xiàn)程的對(duì)象,設(shè)置線(xiàn)程的名稱(chēng),優(yōu)先級(jí)等屬性信息。 handler:當(dāng)線(xiàn)程池中存在的線(xiàn)程數(shù)超過(guò)設(shè)置的最大值之后,新的任務(wù)就會(huì)被拒絕,可以自己定義一個(gè)拒絕的策略,當(dāng)新任務(wù)被拒絕之后,就會(huì)使用hander方法進(jìn)行處理。 在java中也提供了Executors工具類(lèi),在這個(gè)工具類(lèi)中提供了多個(gè)創(chuàng)建線(xiàn)程池的靜態(tài)方法,其中包含newCachedThreadPool、newFixedThreadPool、newScheduledThreadPool、newSingleThreadExecutor等。但是他們每個(gè)方法都是創(chuàng)建了ThreadPoolExecutor對(duì)象,不同的是,每個(gè)對(duì)象的初始 參數(shù)值不一樣; 以上就是Java線(xiàn)程池的基礎(chǔ)知識(shí),如果如果你還想更詳細(xì)的了解Java相關(guān)內(nèi)容可以點(diǎn)擊主頁(yè)。
以上就是昆明中公優(yōu)就業(yè)IT培訓(xùn)中心為您提供Java基礎(chǔ)知識(shí)——Java線(xiàn)程池的全部?jī)?nèi)容,更多內(nèi)容請(qǐng)進(jìn)入學(xué)習(xí)資料 查看