更新時(shí)間:2020-03-25 16:15:35 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2032次
當(dāng)前Java提供的多線程編程中類(lèi),主要包括:
Executor,Executors,ExecutorService,ScheduledExecutorService,AbstractExecutorService等。
本文簡(jiǎn)要的對(duì)其作用做個(gè)介紹,因?yàn)槊總€(gè)類(lèi)和API的應(yīng)用,都要花時(shí)間認(rèn)真學(xué)習(xí)和研究,這里只做個(gè)導(dǎo)引介紹,暫不做應(yīng)用詳解。
導(dǎo)引
系統(tǒng)啟動(dòng)一個(gè)新線程的成本是比較高的,因?yàn)樯婕芭c操作系統(tǒng)交互。使用線程池可以很好地提高性能,尤其是當(dāng)程序中需要?jiǎng)?chuàng)建大量生存期很短的線程時(shí),更應(yīng)該考慮使用線程池。線程池在系統(tǒng)啟動(dòng)時(shí)即創(chuàng)建大量空閑的線程,程序?qū)⒁粋€(gè)Runnable對(duì)象或Callable對(duì)象傳給線程池,線程池就會(huì)啟動(dòng)一個(gè)線程來(lái)執(zhí)行它們的run()或call()方法,當(dāng)run()或call()方法執(zhí)行結(jié)束后,該線程并不會(huì)死亡,而是再次返回線程池中成為空閑狀態(tài),等待執(zhí)行下一個(gè)Runnable對(duì)象的run()或call()方法。
線程池也可以有效控制系統(tǒng)中并發(fā)線程的數(shù)量,當(dāng)系統(tǒng)中包含大量并發(fā)線程時(shí),會(huì)導(dǎo)致系統(tǒng)性能劇烈下降,甚至導(dǎo)致JVM崩潰,而線程池的最大線程數(shù)參數(shù)可以控制系統(tǒng)中并發(fā)線程數(shù)不超過(guò)此數(shù)。
Java線程池(JDK5+)
Java5內(nèi)建線程池,新增了Executors工廠類(lèi)來(lái)產(chǎn)生線程池,該工廠類(lèi)包含如下幾個(gè)靜態(tài)工廠方法來(lái)創(chuàng)建線程池。
ExecutorServicenewCachedThreadPool()創(chuàng)建一個(gè)具有緩沖功能的線程池
ExecutorServicenewFixedThreadPool(intn)創(chuàng)建一個(gè)可重用的,具有固定線程數(shù)的線程池
ExecutorServicenewSingleThreadExecutor()創(chuàng)建一個(gè)只有單線程的線程池,與newFixedThreadPool(1)相同
ScheduledExecutorServicenewScheduledThreadPool(intcorePoolSize)創(chuàng)建一個(gè)具有指定線程數(shù)的線程池,它可以在指定延遲后執(zhí)行線程任務(wù)。
ScheduledExecutorServicenewSingleThreadScheduledExecutor()創(chuàng)建只有一個(gè)線程數(shù)的線程池,它可以在指定延遲后執(zhí)行線程任務(wù)。
ExecutorService代表盡快執(zhí)行線程的線程池(只要線程池中有空閑的線程池,就立刻執(zhí)行線程任務(wù))。
ScheduledExecutorService代表可在指定延遲后或周期性地執(zhí)行線程任務(wù)的線程池。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java基礎(chǔ)學(xué)習(xí):java多線程編程”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743