更新時間:2020-06-19 13:18:29 來源:動力節點 瀏覽2446次
Java的線程池我想大家肯定不會陌生,在工作中或者自己平時的學習中多多少少都會用到,那你真的有了解過底層的實現原理嗎?還是說只停留在用的階段呢?而且關于Java線程池也是在面試中的一個高頻的面試題,就像HashMap的實現原理一樣,基本上面試必問,估計都已經被問爛大街了。
常用的幾種線程池
我們先來看下常用的幾種線程池的創建方式,以及底層采用的實現原理
單個線程:
Executors.newSingleThreadExecutor();
public?static?ExecutorService?newSingleThreadExecutor()?{
?return?new?FinalizableDelegatedExecutorService
?(new?ThreadPoolExecutor(1,?1,
?0L,?TimeUnit.MILLISECONDS,
?new?LinkedBlockingQueue<Runnable>()));
?}
緩存線程:
Executors.newCachedThreadPool();
public?static?ExecutorService?newCachedThreadPool()?{
?return?new?ThreadPoolExecutor(0,?Integer.MAX_VALUE,
?60L,?TimeUnit.SECONDS,
?new?SynchronousQueue<Runnable>());
?}
固定線程:
Executors.newFixedThreadPool(2);
public?static?ExecutorService?newFixedThreadPool(int?nThreads)?{
?return?new?ThreadPoolExecutor(nThreads,?nThreads,
?0L,?TimeUnit.MILLISECONDS,
?new?LinkedBlockingQueue<Runnable>());
?}
定時線程:
Executors.newScheduledThreadPool(3);(父類中)
public?ThreadPoolExecutor(int?corePoolSize,
?int?maximumPoolSize,
?long?keepAliveTime,
?TimeUnit?unit,
?BlockingQueue<Runnable>?workQueue)?{
?this(corePoolSize,?maximumPoolSize,?keepAliveTime,?unit,?workQueue,
?Executors.defaultThreadFactory(),?defaultHandler);
?}
以上就是動力節點java培訓機構的小編針對“如何應對企業Java線程池面試題”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習