ExecutorService常用方法和newFixedThreadPool建立固定大小的執行緒池
是一個介面,繼承了Executor:
public interface ExecutorService extends Executor { }2、Executor:
而Executor亦是一個介面,該介面只包含了一個方法:
void execute(Runnable command);
3、Executors:
該類是一個輔助類,此包中所定義的 Executor、ExecutorService、ScheduledExecutorService、ThreadFactory 和 Callable 類的工廠和實用方法。
此類支援以下各種方法:
• 建立並返回設定有常用配置字串的 ExecutorService 的方法。 • 建立並返回設定有常用配置字串的 ScheduledExecutorService 的方法。 • 建立並返回“包裝的”ExecutorService 方法,它通過使特定於實現的方法不可訪問來禁用重新配置。 • 建立並返回 ThreadFactory 的方法,它可將新建立的執行緒設定為已知的狀態。 • 建立並返回非閉包形式的 Callable 的方法,這樣可將其用於需要 Callable 的執行方法中。 4、建立ExecutorService的方法:newFixedThreadPool()
建立一個可重用固定執行緒數的執行緒池,以共享的無界佇列方式來執行這些執行緒。
5、ExecutorService的方法:shutdown
void shutdown()
- 啟動一次順序關閉,執行以前提交的任務,但不接受新任務。如果已經關閉,則呼叫沒有其他作用。
- 丟擲:
- - 如果安全管理器存在並且關閉,此 ExecutorService 可能操作某些不允許呼叫者修改的執行緒(因為它沒有保持
RuntimePermission
("modifyThread")),或者安全管理器的checkAccess方法拒絕訪問。
啟動一次順序關閉,執行以前提交的任務,但不接受新任務。如果已經關閉,則呼叫沒有其他作用。
awaitTermination
boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException
- 請求關閉、發生超時或者當前執行緒中斷,無論哪一個首先發生之後,都將導致阻塞,直到所有任務完成執行。
- 引數:
timeout
- 最長等待時間unit
- timeout 引數的時間單位- 返回:
- 如果此執行程式終止,則返回true;如果終止前超時期滿,則返回false
- 丟擲:
請求關閉、發生超時或者當前執行緒中斷,無論哪一個首先發生之後,都將導致阻塞,直到所有任務完成執行。既是等待所有子執行緒執行結束。
execute
void execute(Runnable command)
- 在未來某個時間執行給定的命令。該命令可能在新的執行緒、已入池的執行緒或者正呼叫的執行緒中執行,這由Executor實現決定。
在未來某個時間執行給定的命令。該命令可能在新的執行緒、已入池的執行緒或者正呼叫的執行緒中執行,這由 Executor 實現決定。
submit
- 提交一個 Runnable 任務用於執行,並返回一個表示該任務的 Future。該 Future 的get方法在成功完成時將會返回null。
提交一個 Runnable 任務用於執行,並返回一個表示該任務的 Future。該 Future 的 get 方法在成功 完成時將會返回 null。
6、下面是相關的使用例子:public class ExecutorServiceTest { public static void main(String[] args) throws IOException, InterruptedException { // 建立一個固定大小的執行緒池 ExecutorService service = Executors.newFixedThreadPool(3); for (int i = 0; i < 10; i++) { System.out.println("建立執行緒" + i); Runnable run = new Runnable() { @Override public void run() { System.out.println("啟動執行緒"); } }; // 在未來某個時間執行給定的命令 service.execute(run); } // 關閉啟動執行緒 service.shutdown(); // 等待子執行緒結束,再繼續執行下面的程式碼 service.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); System.out.println("all thread complete"); } }
可以發現執行緒被迴圈建立,但是啟動執行緒卻不是連續的,而是由ExecutorService決定的。
相關推薦
ExecutorService常用方法和newFixedThreadPool建立固定大小的執行緒池
1、ExecutorService: 是一個介面,繼承了Executor: public interface ExecutorService extends Executor { } 2、Executor: 而Executor亦是一個介面,該介面只包含了一個方法: void exe
[C++]固定大小執行緒池
執行緒池模型 執行緒池是併發程式設計中常用的模型。 執行緒是一種非常寶貴的資源,建立、銷燬執行緒都是非常消耗時間的操作,所以我們的一個思路是在程式start up的時候,建立一個儲存有多個執行緒的快取,這樣程式執行時就不會頻繁的發生建立和銷燬執行緒的操作,從
Java中Executors類中幾種建立各型別執行緒池的方法及例項
Executors:提供了一系列靜態工廠方法用於建立各種執行緒池。 1.Executors.newCachedThreadPool建立可變執行緒池 如果執行緒池長度超過處理需要,可靈活回收空閒執行緒,若無可回收,則新建執行緒。核心執行緒池大小為0,最大為Integer.MA
帶日誌和計時等功能的執行緒池
帶日誌和計時等功能的執行緒池 歡迎關注作者部落格 簡書傳送門 前言 我們先來聊聊ThreadPoolExecutor的拓展。 擴充套件ThreadPoolExecutor 在執行任務的執行緒中將呼叫beforeExecute和afterEx
c語言通過cond和mutex實現一個高效能執行緒池
首先說明一下這篇文章其實和我另一篇文章很像,只是另一篇只有一個執行緒,只要講述的是cond和mutex的使用,上面是基於c++實現的,封裝的稍微好一些,路徑: https://blog.csdn.net/FlayHigherGT/article/details/83830956 而下面是
Java多執行緒之Executor框架和手寫簡易的執行緒池
目錄 Java多執行緒之一執行緒及其基本使用 Java多執行緒之二(Synchronized) Java多執行緒之三volatile與等待通知機制示例 執行緒池 什麼是執行緒池 執行緒池一種執行緒使用模式,執行緒池會維護多個執行緒,等待著分配可併發執行的任務,當有任務需要執行緒執行時
使用無限大小執行緒池 newCachedThreadPool 可能遇到的問題
看一段測試程式碼: [java] view plain copy print? package com.wenniuwuren.concurrent; import java.util.concurrent.ExecutorService; i
Executors建立ExecutorService(執行緒池)的常用方法
一、執行緒池的建立 JDK中提供了4個可過載的構造方法來建立一個執行緒池,當然萬變不離其中,引數少的構造方法將使用預設的引數呼叫引數多的構造方法。如下為其中兩個構造方法是,第一個構造方法將呼叫第二個構造方法: 構造方法一: public ThreadPool
Javascript - ExtJs - 常用方法和屬性
taf 事件處理 代數 調用 lap ont .cn view html模板 常用方法和屬性(Common methods and attributes) 獲取 get(x) x是元素的ID || dom元素對象 || ExtElement對象 將參數所指轉化為Ex
使用jQuery操作DOM的常用方法和節點
taf dto query 末尾 ont 獲得 ndt true jquery操作 1.常見方法 css(“屬性”,”屬性值”); //設置單個樣式 css({屬性1:屬性值1,屬性2:屬性值3...}); //設置多個樣式 addClass(“樣式名”); //追加單個樣
Ajax技術之XMLHttpRequest(二)【XMLHttpRequest常用方法和屬性】
tro 沒有 body htm 事件 thead 指定 response date 一、XMLHttpRequest中常用的方法: (1)open()方法:用於設置進行異步請求目標的URL、請求方法以及其他參數信息。 函數原型:open("method","URL",asy
json常用方法和本地存儲方法
方式 oca [ ] 鍵值對 本地存儲 tro 刪除cookie fun ice 1、JSON.parse()【把json字符串解析成json對象】 2、JSON.stringify()【把json對象中解析成json字符串】 <script> le
ExecutorService——shutdown方法和awaitTermination方法
ExecutorService的關閉shutdown和awaitTermination為介面ExecutorService定義的兩個方法,一般情況配合使用來關閉執行緒池。 方法簡介shutdown方法:平滑的關閉ExecutorService,當此方法被呼叫時,ExecutorService停止接收新的任務
express 常用方法和外掛
總結express框架中常用的方法及第三方外掛 express.static('./www') 載入靜態檔案 let router=express.Router(); 建立路由 express.logger() 列印日誌資訊 cookie-parser / cookie-session 身份認證 u
js中Object物件常用方法和屬性
1、屬性 Object.prototype.writable:預設為false Object.prototype.enumerable:預設為false Object.prototype.configurable:預設為false Object.prototype.constructor:用
Composer 常用方法和命令
//設定中國映象 方法一: 修改 composer 的全域性配置檔案(推薦方式) 開啟命令列視窗(windows使用者)或控制檯(Linux、Mac 使用者)並執行如下命令: composer config -g repo.packagist composer https://packa
PyQt之下拉列表框(QComboBOX)的常用方法和訊號
PyQt之下拉列表框(QComboBOX)的常用方法和訊號 QComboBox是一個集按鈕和下拉選項於一體的控制元件。 一、QComboBox類中的常用方法 addItem(): 新增一個下拉選項 addItems(): 從列表中新增下拉選項 Clear():
PyQt5之按鈕類控制元件(QAbstractButton)的常用方法和訊號
PyQt5之按鈕類控制元件(QAbstractButton)的常用方法和訊號 在PyQt中QAbestractButton是所有按鈕控制元件的基類,提供了按鈕的通用性功能,但該類是抽象的無法進行例項化,必須由其他的按鈕類整合QAbstracButton來實現不同的功能,不同的表現形式。
PyQt5之多行文字框(QtextEdit)類中的常用方法和訊號
PyQt5之QtextEdit類中的常用方法和訊號 一、QTextEdit類中的常用方法 setPlainText(): 設定多行文字框的內容。 toPlainText(): 返回多行文字框的文字內容。 setHtml(): 設定多行文
PyQt之單行文字框(QLineEdit)類中的常用方法和訊號
QLineEdit類中的常用方法和訊號 一、QLineEdit類中的常用方法 setAlignment(): 按固定方式對齊文字: Qt.AlignLeft:水平方向靠左對齊 Qt.AlignRight:水平方向靠右對齊 Qt.AlignCenter:水平方向居