1. 程式人生 > >Executors的工廠方法提供的5種不同的執行緒池

Executors的工廠方法提供的5種不同的執行緒池

1、newFixedThreadPool() : 
作用:該方法返回一個固定執行緒數量的執行緒池,該執行緒池中的執行緒數量始終不變,即不會再建立新的執行緒,也不會銷燬已經建立好的執行緒,自始自終都是那幾個固定的執行緒在工作,所以該執行緒池可以控制執行緒的最大併發數。 
栗子:假如有一個新任務提交時,執行緒池中如果有空閒的執行緒則立即使用空閒執行緒來處理任務,如果沒有,則會把這個新任務存在一個任務佇列中,一旦有執行緒空閒了,則按FIFO方式處理任務佇列中的任務。


2、newCachedThreadPool() : 
作用:該方法返回一個可以根據實際情況調整執行緒池中執行緒的數量的執行緒池。即該執行緒池中的執行緒數量不確定,是根據實際情況動態調整的。 
栗子:假如該執行緒池中的所有執行緒都正在工作,而此時有新任務提交,那麼將會建立新的執行緒去處理該任務,而此時假如之前有一些執行緒完成了任務,現在又有新任務提交,那麼將不會建立新執行緒去處理,而是複用空閒的執行緒去處理新任務。那麼此時有人有疑問了,那這樣來說該執行緒池的執行緒豈不是會越集越多?其實並不會,因為執行緒池中的執行緒都有一個“保持活動時間”的引數,通過配置它,如果執行緒池中的空閒執行緒的空閒時間超過該“儲存活動時間”則立刻停止該執行緒,而該執行緒池預設的“保持活動時間”為60s。


3、newSingleThreadExecutor() : 
作用:該方法返回一個只有一個執行緒的執行緒池,即每次只能執行一個執行緒任務,多餘的任務會儲存到一個任務佇列中,等待這一個執行緒空閒,當這個執行緒空閒了再按FIFO方式順序執行任務佇列中的任務。


4、newScheduledThreadPool() : 
作用:該方法返回一個可以控制執行緒池內執行緒定時或週期性執行某任務的執行緒池。


5、newSingleThreadScheduledExecutor() : 
作用:該方法返回一個可以控制執行緒池內執行緒定時或週期性執行某任務的執行緒池。只不過和上面的區別是該執行緒池大小為1,而上面的可以指定執行緒池的大小。

相關推薦

Executors工具類 4獲取執行服務物件的方法

java中目前我只瞭解4 種獲得多執行緒的方法 : 1.繼承Thread類 ,重寫run方法 2.new Thread(實現Runnable介面) 3.FutureTask ft = new FutureTask<Integer>(new MyThread())

Java定時任務的幾方法(Thread 和 Timer,執行

/**   * 普通thread   * 這是最常見的,建立一個thread,然後讓它在while迴圈裡一直執行著,   * 通過sleep方法來達到定時任務的效果。這樣可以快速簡單的實現,程式碼如

Java 四常見執行解析

四種常見執行緒池   執行緒池用於管理執行緒的建立與銷燬,避免無用執行緒造成資源浪費,當需要建立多個執行緒時,我們往往需要一個管理者來管理這些執行緒,這也就引入了執行緒池的概念.Android中有四種較為常見的執行緒池也是我們使用最廣泛的執行緒池,Fixed

Java執行用法解析

本文為大家分析四種Java執行緒池用法,供大家參考,具體內容如下 http://www.jb51.net/article/81843.htm 1、new Thread的弊端 執行一個非同步任務你還只是如下new Thread嗎? new Thread(new Runn

python 8-5 如何使用執行 執行是指分配固定個數的執行,concurrentfutues下的ThreadPoolExecutor

8-5 如何使用執行緒池 解決方案: 執行緒池是指分配固定個數的執行緒 執行緒池 python3 標準庫中concurrentfutues下的ThreadPoolExecutor 物件的sub

常見執行使用舉例

執行緒池 執行緒池:Executor 管理多個非同步任務的執行,而無需程式設計師顯式地管理執行緒的生命週期。這裡的非同步是指多個任務的執行互不干擾,不需要進行同步操作。 主要有四種執行緒池: 快取池 newCachedThreadPool建立一個可緩存執行緒池,如果執行緒池長度超過處理需要,可靈活

JDK1.5中的執行(java.util.concurrent.ThreadPoolExecutor)使用簡介

在多執行緒大師Doug Lea的貢獻下,在JDK1.5中加入了許多對併發特性的支援,例如:執行緒池。 一、簡介執行緒池類為 java.util.concurrent.ThreadPoolExecutor,常用構造方法為:ThreadPoolExecutor(int corePoolSize, int ma

百度面試題之 啟動執行方式有哪幾執行有哪幾

1、啟動執行緒方式: 要啟動的可以分為兩類:返回結果和不返回結果。對於這兩種,也分別有兩種啟動執行緒的方式: 1)繼承Thread類,implements Runnable介面 2)實現Callable介面通過FutureTask包裝器來建立Thread執行緒、使用Ex

JDK1.5之後ExecutorService執行拋RejectedExecutionException的原因剖析以及解決方案

我們的Android專案前些天把圖片下載放到執行緒池去開執行緒做了,一般的介面是沒有什麼問題,但是資料量大一點的ListView有的時候就會拋RejectedExecutionException. Google了一些資料,其實說的也還可以,就是舉了些例子. 大致看了之後,

Executors工廠方法提供5不同執行

1、newFixedThreadPool() :  作用:該方法返回一個固定執行緒數量的執行緒池,該執行緒池中的執行緒數量始終不變,即不會再建立新的執行緒,也不會銷燬已經建立好的執行緒,自始自終都是那幾個固定的執行緒在工作,所以該執行緒池可以控制執行緒的最大併發數。  栗子

Executors提供的四執行

Java 5+中的Executor介面定義一個執行執行緒的工具。它的子型別即執行緒池介面是ExecutorService。要配置一個執行緒池是比較複雜的,尤其是對於執行緒池的原理不是很清楚的情況下,因此在工具類Executors面提供了一些靜態工廠方法,生成一些常用的執行緒池,如下所示:  -&n

C-index/C-statistic 計算的5不同方法及比較

前言 宣告: 所有計算基於R軟體,如果有人問其他軟體如何實現,請自行Google。 評價一個預測模型的表現可以從三方面來度量: 區分能力(discrimination): 指的是模型區分有病/沒病,死亡/活著等結局的預測能力。簡單舉個例子,比如說,現有100個人,50個有病

Executors(執行器)提供的四執行

java執行緒池: newCacheThreadPool :建立一個可快取執行緒池,執行緒的數量不固定,可以根據需求自動建立執行緒 這種型別的執行緒池特點是: 1、工作執行緒的建立數量幾乎沒有限制(其實也有限制的,數目為Interger. MAX_VALUE), 這樣可靈活的往

Java 多執行ThreadPoolExecutor解析及Executors類中提供的靜態方法來建立執行

上面的程式碼可能看起來不是那麼容易理解,下面我們一句一句解釋:   首先,判斷提交的任務command是否為null,若是null,則丟擲空指標異常;   接著是這句,這句要好好理解一下: if (poolSize >= corePoolSize || !addIfUnderCorePoolSize(c

java兩啟動執行方法根本不同,Thread繼承和實現Runable介面

java實現多執行緒有兩種方法 1、繼承Thread類,實現run方法 2、實現Runable介面,實現run方法 示例程式截圖(程式來自瘋狂java講義) 實現步驟 (1)定義Thread類的子類,並重寫該類的run()方法,該run()方法的方法體就代表了執行緒需要

Executors提供的四執行和自定義執行

  執行緒池的思想是一種物件池的思想,開放一塊記憶體空間,裡面存放了眾多(未死亡)的執行緒,池中執行緒執行排程由池管理器來處理。當有執行緒任務時,從池中取一個,執行完畢,物件歸還給池。這樣可以避免反覆建立執行緒物件所帶來的效能開銷,節省了系統的資源。 一、固定大小

Java中Executors類中幾建立各型別執行方法及例項

Executors:提供了一系列靜態工廠方法用於建立各種執行緒池。 1.Executors.newCachedThreadPool建立可變執行緒池 如果執行緒池長度超過處理需要,可靈活回收空閒執行緒,若無可回收,則新建執行緒。核心執行緒池大小為0,最大為Integer.MA

Linux系統中5重複執行歷史命令的方法

Linux 下,如果要執行一條或多條之前輸過的指令,要怎麼處理?很多人會想到使用上下箭頭去翻查歷史輸入的命令。這當然是可以了,除了

手機端白屏前端優化的方法5 以上

渲染 阻塞 rip 數據 通過 可能 執行 需要 滾動 手機白屏主要是因為頁面渲染阻塞導致的,導致的原因有: 1:css文件加載需要一定的時間,在加載的過程中頁面是空白的 解決:將css代碼前置或者內聯html 即使用<style> 2.可能是等待異

執行原理--工廠Executors

文章目錄 執行緒池原理--工廠類Executors 構造器 newFixedThreadPool newSingleThreadExecutor newCachedThreadPool newScheduledThre