首頁  >  文章  >  Java  >  簡單歸納java線程池的四種創建方式

簡單歸納java線程池的四種創建方式

WBOY
WBOY轉載
2022-07-21 17:55:371791瀏覽

本篇文章為大家帶來了關於java的相關知識,主要介紹了java線程池的四種創建方式詳細分析,連接池是創建和管理一個連接的緩衝池的技術,這些連接準備好被任何需要它們的線程使用,下面一起來看一下,希望對大家有幫助。

簡單歸納java線程池的四種創建方式

推薦學習:《java影片教學

前言

在講述執行緒池的前提先補充一下連接池的定義

連接池是創建和管理一個連接的緩衝池的技術,這些連接準備好被任何需要它們的線程使用

可以看到其連接池的作用如下:

1. 執行緒池

執行緒池(英文:thread pool) :一種執行緒使用模式。執行緒過多會帶來調度開銷,進而影響快取局部性和整體效能。而線程池則維護多個線程,等待監督管理者分配可並發執行的任務。這避免了在處理短時間任務時創建與銷毀線程的代價。執行緒池不僅能夠保證核心的充分利用,還能防止過度調度

特點:

  • 降低資源消耗: 透過重複利用已建立的執行緒降低執行緒建立和銷毀造成的銷耗。提高反應速度: 當任務到達時,任務可以不需要等待執行緒建立就能立即執行。提高執行緒的可管理性: 執行緒是稀缺資源,如果無限制的創建,不僅會銷耗系統資源,還會降低系統的穩定性,使用執行緒池可以進行統一的分配,調優和監控。

其功能為:

重複使用存在的線程,減少物件建立、消亡的開銷可有效控制最大並發線程數,提高系統資源的使用率,同時避免過多資源競爭,避免堵塞。提供定時執行、定期執行、單執行緒、並發數控制等功能。

具體其架構如下所示:

#2. 建立方式

一共有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中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除