摘要:線程池的類體系結構架構首先明確一定是在里面可以供使用者調用的啟動線程類是。解決了向線程池提交任務的入口問題,同時解決了如何進行重復調用任務的問題。配置一個合適的線程池是很復雜的,因此默認的一些線程池配置可以減少這個操作。
線程池的類體系結構
JAVA API 架構
首先明確一定是在Java里面可以供使用者調用的啟動線程類是Thread。因此Runnable或者Timer/TimerTask等都是要依賴Thread來啟動的,因此在ThreadPool里面同樣也是靠Thread來啟動多線程的。
默認情況下Runnable接口執(zhí)行完畢后是不能拿到執(zhí)行結果的,因此在ThreadPool里就定義了一個Callable接口來處理執(zhí)行結果。
為了異步阻塞的獲取結果,F(xiàn)uture可以幫助調用線程獲取執(zhí)行結果。
Executor解決了向線程池提交任務的入口問題,同時ScheduledExecutorService解決了如何進行重復調用任務的問題。
CompletionService解決了如何按照執(zhí)行完畢的順序獲取結果的問題,這在某些情況下可以提高任務執(zhí)行的并發(fā),調用線程不必在長時間任務上等待過多時間。
顯然線程的數(shù)量是有限的,而且也不宜過多,因此合適的任務隊列是必不可少的,BlockingQueue的容量正好可以解決此問題。
固定任務容量就意味著在容量滿了以后需要一定的策略來處理過多的任務(新任務),RejectedExecutionHandler正好解決此問題。
一定時間內阻塞就意味著有超時,因此TimeoutException就是為了描述這種現(xiàn)象。TimeUnit是為了描述超時時間方便的一個時間單元枚舉類。
配置一個合適的線程池是很復雜的,因此Executors默認的一些線程池配置可以減少這個操作。
小福利:知乎上回答的關于并發(fā)的書籍和博客 點擊查看
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/69836.html
摘要:多線程同步工具箱之篇前言的多線程協(xié)調工具,,,都是在多線程代碼中使用比較多的工具類之一。毫不夸張的說,這幾個類,是等同于解決多線程問的包,實在有必要添加到程序員的工具箱里面。 Java多線程同步工具箱之CountDownLatch篇 前言 Java的多線程協(xié)調工具CountDownLatch,Semaphore,CyclicBarrier,ReadWriteLock都是在多線程代碼中使...
摘要:直接對棧的操作只有兩個,就是對棧幀的壓棧和出棧。中將永久代移除,同時增加元數(shù)據區(qū)。在中,本地方法棧和虛擬機棧是在同一塊兒區(qū)域,這完全取決于技術實現(xiàn)的決定,并未在規(guī)范中強制。 原文:https://github.com/linsheng97... 描述一下 JVM 的內存區(qū)域 程序計數(shù)?(PC,Program Counter Register)。在 JVM 規(guī)范中,每個線程都有它自己的...
摘要:堆區(qū)堆是虛擬機所管理的內存中最大的一塊,它是被所有線程共享的一塊內存區(qū)域,該區(qū)域在虛擬機啟動的時候創(chuàng)建。 運行時數(shù)據區(qū)域 ? ?想要了解jvm,那對其內存分配管理的學習是必不可少的;java虛擬機在執(zhí)行java程序的時候會把它所管理的內存劃分成若干數(shù)據區(qū)域。這些區(qū)域有著不同的功能、用途、創(chuàng)建/銷毀時間。java虛擬機所分配管理的內存區(qū)域如圖1所示 程序計數(shù)器 ? ?程序計數(shù)器是一塊比較...
摘要:目錄源碼之下無秘密做最好的源碼分析教程源碼分析之番外篇的前生今世的前生今世之一簡介的前生今世之二小結的前生今世之三詳解的前生今世之四詳解源碼分析之零磨刀不誤砍柴工源碼分析環(huán)境搭建源碼分析之一揭開神秘的紅蓋頭源碼分析之一揭開神秘的紅蓋頭客戶端 目錄 源碼之下無秘密 ── 做最好的 Netty 源碼分析教程 Netty 源碼分析之 番外篇 Java NIO 的前生今世 Java NI...
閱讀 1539·2021-09-22 15:35
閱讀 2018·2021-09-14 18:04
閱讀 891·2019-08-30 15:55
閱讀 2461·2019-08-30 15:53
閱讀 2689·2019-08-30 12:45
閱讀 1210·2019-08-29 17:01
閱讀 2589·2019-08-29 15:30
閱讀 3523·2019-08-29 15:09