本篇文章為大家帶來了關於java的相關知識,主要介紹了java線程池的四種創建方式詳細分析,連接池是創建和管理一個連接的緩衝池的技術,這些連接準備好被任何需要它們的線程使用,下面一起來看一下,希望對大家有幫助。
推薦學習:《java影片教學》
在講述執行緒池的前提先補充一下連接池的定義
連接池是創建和管理一個連接的緩衝池的技術,這些連接準備好被任何需要它們的線程使用
可以看到其連接池的作用如下:
執行緒池(英文:thread pool) :一種執行緒使用模式。執行緒過多會帶來調度開銷,進而影響快取局部性和整體效能。而線程池則維護多個線程,等待監督管理者分配可並發執行的任務。這避免了在處理短時間任務時創建與銷毀線程的代價。執行緒池不僅能夠保證核心的充分利用,還能防止過度調度
特點:
其功能為:
重複使用存在的線程,減少物件建立、消亡的開銷可有效控制最大並發線程數,提高系統資源的使用率,同時避免過多資源競爭,避免堵塞。提供定時執行、定期執行、單執行緒、並發數控制等功能。
具體其架構如下所示:
一共有4種建立方式分別為一池一線程、一池n線程、一池可擴容線程、一池定時及週期線程
Executors.newFixedThreadPool(int)
一池N線程,控制最大的並發數,超出的執行緒會在佇列中等待
ExecutorService threadPool1 = Executors.newFixedThreadPool(5); //5个窗口
Executors.newSingleThreadExecutor()
一池一執行緒
ExecutorService threadPool2 = Executors.newSingleThreadExecutor(); //一个窗口
#Executors.newCachedThreadPool()
一池可擴充依需求建立線程,可靈活回收空閒線程
執行完線程,可不用再擴建繼續使用
ExecutorService threadPool3 = Executors.newCachedThreadPool();
Executors.newScheduledThreadPool()
,支援定時及週期性任務執行
//表示延迟一秒,后执行3秒 ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5); scheduledThreadPool.scheduleAtFixedRate(new Runnable() { @Override public void run() { log.info("delay 1 seconds, and excute every 3 seconds"); } }, 1, 3, TimeUnit.SECONDS);
推薦學習:《java影片教學》
以上是簡單歸納java線程池的四種創建方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!