執行緒池引數解析

2021-08-21 14:15:45 字數 2135 閱讀 7082

public threadpoolexecutor(int corepoolsize,

int maximumpoolsize,

long keepalivetime,

timeunit unit,

blockingqueueworkqueue)

引數的意義:

corepoolsize:核心池的大小,在建立了執行緒池後,預設情況下,執行緒池中並沒有任何執行緒,而是等待有任務到來才建立執行緒去執行任務,當執行緒池中的執行緒數目達到corepoolsize後,就會把到達的任務放到快取佇列當中。只有當工作佇列滿了的情況下才會建立超出這個數量的執行緒。如果某個執行緒的空閒時間超過了活動時間,那麼將標記為可**,並且只有當執行緒池的當前大小超過corepoolsize時該執行緒才會被終止。使用者可呼叫prestartallcorethreads()或者prestartcorethread()方法預先建立執行緒,即在沒有任務到來之前就建立corepoolsize個執行緒或者乙個執行緒。

unit:引數keepalivetime的時間單位,有7種取值,在timeunit類中有7種靜態屬性。

workqueue:乙個阻塞佇列,用來儲存等待執行的任務,當執行緒池中的執行緒數目達到corepoolsize後,就會把到達的任務放到快取佇列當中。

threadfactory:執行緒工廠,主要用來建立執行緒;

handler:表示當拒絕處理任務時的策略,也就是引數maximumpoolsize達到後丟棄處理的方法。有以下四種取值:

threadpoolexecutor.abortpolicy:丟棄任務並丟擲rejectedexecutionexception異常。

threadpoolexecutor.discardpolicy:也是丟棄任務,但是不丟擲異常。

threadpoolexecutor.discardoldestpolicy:丟棄佇列最前面的任務,然後重新嘗試執行任務(重複此過程)

threadpoolexecutor.callerrunspolicy:由呼叫執行緒處理該任務

使用者也可以實現介面rejectedexecutionhandler定製自己的策略。

1、工廠方法:

public class threadpoolproxyfactory }}

return mnormalthreadpoolproxy;

}/**

*/public static threadpoolproxy getdownloadthreadpoolproxy() }}

return mdownloadthreadpoolproxy;

}}

2、執行緒池**

public class threadpoolproxy 

/*** 初始化threadpoolexecutor

* 雙重檢查加鎖,只有在第一次例項化的時候才啟用同步機制,提高了效能

*/private void initthreadpoolexecutor() }}

}/**

執行任務和提交任務的區別?

1.有無返回值

execute->沒有返回值

submit-->有返回值

2.future的具體作用?

1.有方法可以接收乙個任務執行完成之後的結果,其實就是get方法,get方法是乙個阻塞方法

2.get方法的簽名丟擲了異常===>可以處理任務執行過程中可能遇到的異常

*//**

* 執行任務

*/public void execute(runnable task)

/*** 提交任務

*/public future submit(runnable task)

/*** 移除任務

*/public void remove(runnable task)

}

3、執行緒池使用(具體runnable自己定義,執行緒的引數自己靈活修改):

threadpoolproxyfactory .getnormalthreadpoolproxy().execute(runnable);

執行緒池引數

由於系統頻繁的建立和銷毀執行緒,因而使用執行緒池讓建立的執行緒進行復用 1.corepoolsize 指定了執行緒池中的執行緒數量 2.maximumpoolsize 執行緒池中最大執行緒數量 3.keepalivetime 當執行緒池中的執行緒數超過corepoolsize,多餘的空閒的執行緒的存...

執行緒池引數

我把執行緒池引數給做個形象的比喻,執行緒池 就好比乙個水池,池底有n個小洞,就是核心執行緒數量n,最大執行緒數量就是這個池子能裝多少個桌球,等待佇列 就是池子之外的一塊地方,有的佇列是有界的,就是大小固定,有的是無界的,大小不固定。任務 就是把桌球丟到池子中,讓桌球從池底的小洞掉下去。相當於執行緒的...

Java 執行緒池引數

threadpoolexecutor是執行緒池的真正實現,他通過構造方法的一系列引數 不同的構造方法 來構成不同配置的執行緒池。拒絕策略,是乙個介面,可以自己實現自定義的拒絕策略。當執行緒數已經達到maxpoolsize,切佇列已滿,會拒絕新任務 當執行緒池被呼叫shutdown 後,會等待執行緒池...