日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

executor线程池框架_如何使用Java 5 Executor框架创建线程池

發布時間:2023/12/3 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 executor线程池框架_如何使用Java 5 Executor框架创建线程池 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

executor線程池框架

Java 5以Executor框架的形式在Java中引入了線程池,它允許Java程序員將任務提交與任務執行分離。 如果要使用Java進行服務器端編程,則線程池是維護系統可伸縮性,魯棒性和穩定性的重要概念。 對于那些不熟悉Java中的線程池或這里的線程池的概念的人來說,Java中的線程池是工作線程的池,它可以執行提供給他們的任何任務,主要是通過Runnable的實現形式或Callable接口。 由于Java本身支持編程語言中的多線程,因此它允許多個線程同時運行并執行任務的并行處理。 在本文中,我們將學習有關Java線程池的以下內容:

  • Java中的線程池是什么?
  • 為什么我們需要Java中的線程池?
  • Java 5中的Executor框架是什么?
  • 如何使用Java中的Executor框架創建固定大小的線程池?
  • 在Java中使用線程池的好處?
  • 什么是Java中的線程池以及我們為什么需要它


    正如我所說的,線程池是已經創建好的工作線程池,準備好執行此工作。 線程池是任何多線程服務器端Java應用程序都需要的基本功能之一。 使用線程池的一個示例是創建一個Web服務器,該服務器處理客戶端請求。 如果您熟悉套接字編程,那么您將知道ServerSocket.accept()會阻塞方法,并在建立套接字連接之前一直阻塞 。 如果僅使用一個線程來處理客戶端請求,則它將隨后限制可以同時訪問服務器的客戶端數量。 為了支持大量客戶端,您可以決定每個請求范例使用一個線程,其中每個請求由單獨的線程處理,但這要求在請求到達時創建線程。 由于創建線程是耗時的過程,因此會延遲請求處理。 它還根據每個JVM允許的線程數限制客戶端的數量,這顯然是有限的。 線程池為您解決了這個問題,它創建了線程并進行管理。 線程池不是以創建線程并在完成任務后將其丟棄的方式,而是以工作線程的形式重用線程。 由于線程通常是在應用程序啟動時創建并池化的,因此您的服務器可以立即開始請求處理,這可以進一步縮短服務器的響應時間。 除此之外,在Java應用程序中使用線程池還有其他好處,我們將在下一部分中看到。 簡而言之,我們需要線程池來更好地管理線程并將任務提交與執行分離。 Java 5中引入的線程池和Executor框架是庫提供的出色線程池。

    Java線程池– Java 5中的執行器框架

    Java 5引入了一些有用的功能(例如Enum , 泛型 , 變量參數)以及多個并發集合和實用程序(例如ConcurrentHashMap和BlockingQueue等),還引入了完整功能的內置線程池框架(通常稱為Executor框架) 。 該線程池框架的核心是Executor接口,該接口使用方法execute(Runnable task)定義任務執行的抽象; ExecutorService擴展了Executor以添加各種生命周期和線程池管理工具,例如關閉線程池。 Executor框架還提供了一個稱為Executors的靜態實用程序類 (類似于Collections), 該類提供了幾種靜態工廠方法來創建Java中各種類型的線程池實現,例如固定大小的線程池,緩存的線程池和計劃的線程池。

    Runnable和Callable接口用于表示由這些線程池中管理的工作線程執行的任務。 Executor框架的有趣之處在于,它基于Producer使用者設計模式 ,其中應用程序線程產生任務和worker線程使用者或執行那些任務,因此,它也遭受了Producer使用者任務的限制,例如生產速度大大高于消耗速度當然,僅當您的隊列不受限制時,您才可能因為排隊的任務而運行OutOfMemory。

    如何使用Java中的Executor框架創建固定大小的線程池?

    由于Executors類提供了靜態工廠方法,因此使用Java 5 Executor框架創建固定大小的線程池非常容易。 您需要做的就是定義要同時執行的任務,然后將該任務提交給ExecutorService。 通過它們,線程池將負責如何執行該任務,該線程可以由任何空閑的工作線程執行,并且如果您對結果感興趣,則可以查詢Submit()方法返回的Future對象。 Executor框架還提供了不同類型的線程池,例如SingleThreadExecutor僅創建一個工作線程,或者CachedThreadPool在需要時創建工作線程。 您還可以查看Executor框架的Java文檔以獲取此API提供的服務的完整詳細信息。 實踐中的Java并發性還有兩章專門介紹如何有效使用Java 5 Executor框架,對于任何高級Java開發人員來說都是值得一讀的。

    Java中的線程池示例

    這是Java中線程池的示例,該示例使用Java 5的Executor框架創建一個工作線程數為10的固定線程池。它將創建任務并將其提交給線程池以執行:

    public class ThreadPoolExample {public static void main(String args[]) {ExecutorService service = Executors.newFixedThreadPool(10);for (int i =0; i<100; i++){service.submit(new Task(i));}}}final class Task implements Runnable{private int taskId;public Task(int id){this.taskId = id;}@Overridepublic void run() {System.out.println("Task ID : " + this.taskId +" performed by " + Thread.currentThread().getName());}}Output: Task ID : 0 performed by pool-1-thread-1 Task ID : 3 performed by pool-1-thread-4 Task ID : 2 performed by pool-1-thread-3 Task ID : 1 performed by pool-1-thread-2 Task ID : 5 performed by pool-1-thread-6 Task ID : 4 performed by pool-1-thread-5

    如果查看此Java示例的輸出,則會發現線程池中正在執行任務的線程不同。

    Java線程池的好處

    線程池為Java應用程序提供了幾項好處,其中最大的好處是將任務提交與任務執行分開,這比緊密耦合的創建和執行模式更松散,靈活。 這是在Java中使用線程池的更多好處:

  • 線程池的使用通過避免在請求或任務處理期間創建線程來減少響應時間。
  • 使用線程池可讓您根據需要更改執行策略。 您只需替換ExecutorService實現即可從單線程切換到多線程。
  • Java應用程序中的線程池通過創建基于系統負載和可用資源決定的配置數量的線程來提高系統的穩定性。
  • 線程池使應用程序開發人員擺脫了線程管理的束縛,并專注于業務邏輯。
  • 以上就是Java 5中的線程池。我們已經了解了Java中的線程池,Java 5中的執行者框架,如何在Java中創建線程池以及在Java應用程序中使用線程池的一些好處。 毫無疑問,線程池的知識對于服務器端核心Java開發人員至關重要,我建議閱讀Java中的Java線程和并發實踐以了解有關并發和線程池的更多信息。

    本文推薦書籍

    • Brian Goeatz,Doug Leaa,Joshua Bloch和團隊的實踐中的Java并發
    • Java線程作者:Scott Oaks和Henry Wong
    • Joshua Bloach撰寫的有效Java

    參考: 如何使用Java 5 Executor框架創建線程池– Java的Javarevisited博客上的JCG合作伙伴 Javin Paul的示例教程 。

    翻譯自: https://www.javacodegeeks.com/2013/07/how-to-create-thread-pools-using-java-5-executor-framework.html

    executor線程池框架

    總結

    以上是生活随笔為你收集整理的executor线程池框架_如何使用Java 5 Executor框架创建线程池的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。