一,概念
池化技術:執行緒的執行是占用系統資源的,每個執行緒的誕生都需要有(建立——初始化——使用——銷毀)等步驟,為了避免多次重複的建立和銷毀執行緒利用率,提出了池化技術,先建立好程序放到程序池中,如果要使用程序了就從池裡面拿來用,用完之後就還回去。這就是池化技術
傳統:建立執行緒——》使用執行緒——》銷毀程序
池化技術:取出執行緒)——》使用執行緒——》歸還執行緒
池化技術優點:降低資源消耗,提高系統的速度,方便對程序的管理
二,執行緒池
1,三大方法
/**原始碼分析:* newsinglethreadexecutor 執行緒池中就乙個執行緒
* newfixedthreadpool 通過引數自行定義執行緒池的大小
* newcachedthreadpool 根據實際情況自動伸縮執行緒池的大小
*/public static void test6()
);// }
// threadpoll1.shutdown();
// for (int i=0;i<10;i++)
// );
// }
// threadpoll2.shutdown();
for (int i=0;i<10;i++));}
threadpoll3.shutdown();
}
public static executorservice newsinglethreadexecutor()這三個方法的本質都是threadpoolexecutorpublic static executorservice newfixedthreadpool(int nthreads)
public static executorservice newcachedthreadpool()
public threadpoolexecutor(int corepoolsize,//核心執行緒數結論:int maximumpoolsize,//最大執行緒數
long keepalivetime,//連線儲存的時間
timeunit unit,//時間單位
blockingqueueworkqueue,//阻塞佇列
threadfactory threadfactory,//執行緒工廠
rejectedexecutionhandler handler)
2,7大引數,使用原始方法進行執行緒池的建立
int corepoolsize,//核心執行緒數3,最大執行緒數該如何定義int maximumpoolsize,//最大執行緒數
long keepalivetime,//連線儲存的時間
timeunit unit,//時間單位
blockingqueueworkqueue,//阻塞佇列
threadfactory threadfactory,//執行緒工廠
rejectedexecutionhandler handler)
/*** 使用預設的執行緒池方式進行建立,根據需求去定製
* 如下配置:核心執行緒為2,最大執行緒為5,超時時間為3秒,處理不了的請求放入的佇列長度為5,使用的拒絕策略為拋異常
* 正常情況下是核心的2個執行緒加上佇列來處理請求,如果請求數》核心執行緒資料+佇列長度,會申請新的執行緒加入處理(當前執行緒數《最大執行緒數)
*/public static void test7());}
threadpoolexecutor.shutdown();
}
//1,cpu密集型 獲取cpu的核數作為執行緒的最大數 runtime.getruntime().**ailableprocessors()//2,io密集型 判斷你的程式中十分耗io的執行緒有幾個,最大執行緒數大於它即可
J U C執行緒池
執行緒的建立和切換都是代價比較大的。所以,我們需要有乙個好的方案能做到執行緒的復用,這就涉及到乙個概念 執行緒池。合理的使用執行緒池能夠帶來3個很明顯的好處 降低資源消耗 通過重用已經建立的執行緒來降低執行緒建立和銷毀的消耗 提高響應速度 任務到達時不需要等待執行緒建立就可以立即執行。提高執行緒的可...
j u c執行緒 執行緒池
final void runworker worker w catch runtimeexception x catch error x catch throwable x finally finally completedabruptly false finally private runnabl...
JUC 執行緒池數量
去乙個網頁抓資料儲存到資料庫中,這個過程也就1秒中吧 執行緒池fixedthreadpool配製多少合適?如果是cpu密集型應用,則執行緒池大小設定為n 1 n為cpu的核數 如果是io密集型應用,則執行緒池大小設定為2n 1 這裡去乙個網頁抓資料 需要建立http請求響 io 應後拿到資料,然後再...