當前Java提供的多線程編程中類,主要包括:
Executor,Executors,ExecutorService,ScheduledExecutorService,AbstractExecutorService等。
本文簡要的對其作用做個介紹,因為每個類和API的應用,都要花時間認真學習和研究,這里只做個導引介紹,暫不做應用詳解。
導引
系統(tǒng)啟動一個新線程的成本是比較高的,因為涉及與操作系統(tǒng)交互。使用線程池可以很好地提高性能,尤其是當程序中需要創(chuàng)建大量生存期很短的線程時,更應該考慮使用線程池。線程池在系統(tǒng)啟動時即創(chuàng)建大量空閑的線程,程序將一個Runnable對象或Callable對象傳給線程池,線程池就會啟動一個線程來執(zhí)行它們的run()或call()方法,當run()或call()方法執(zhí)行結束后,該線程并不會死亡,而是再次返回線程池中成為空閑狀態(tài),等待執(zhí)行下一個Runnable對象的run()或call()方法。
線程池也可以有效控制系統(tǒng)中并發(fā)線程的數(shù)量,當系統(tǒng)中包含大量并發(fā)線程時,會導致系統(tǒng)性能劇烈下降,甚至導致JVM崩潰,而線程池的最大線程數(shù)參數(shù)可以控制系統(tǒng)中并發(fā)線程數(shù)不超過此數(shù)。
Java線程池(JDK5+)
Java5內(nèi)建線程池,新增了Executors工廠類來產(chǎn)生線程池,該工廠類包含如下幾個靜態(tài)工廠方法來創(chuàng)建線程池。
ExecutorServicenewCachedThreadPool()創(chuàng)建一個具有緩沖功能的線程池
ExecutorServicenewFixedThreadPool(intn)創(chuàng)建一個可重用的,具有固定線程數(shù)的線程池
ExecutorServicenewSingleThreadExecutor()創(chuàng)建一個只有單線程的線程池,與newFixedThreadPool(1)相同
ScheduledExecutorServicenewScheduledThreadPool(intcorePoolSize)創(chuàng)建一個具有指定線程數(shù)的線程池,它可以在指定延遲后執(zhí)行線程任務。
ScheduledExecutorServicenewSingleThreadScheduledExecutor()創(chuàng)建只有一個線程數(shù)的線程池,它可以在指定延遲后執(zhí)行線程任務。
ExecutorService代表盡快執(zhí)行線程的線程池(只要線程池中有空閑的線程池,就立刻執(zhí)行線程任務)。
ScheduledExecutorService代表可在指定延遲后或周期性地執(zhí)行線程任務的線程池。
以上就是長沙一度軟件培訓java培訓機構的小編針對“Java基礎學習:java多線程編程”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。