執行緒池的幾種形式

2021-09-11 23:59:06 字數 2875 閱讀 1406

記錄下執行緒的幾種形式以及寫法:

快取執行緒池    executors.newcachethreadpool();

executorservice chachethreadpool = executors.newcachedthreadpool();

try

});}

} catch (exception e)

輸出結果:(因為睡眠,前面的執行緒已經被銷毀,重新使用原來的執行緒)

pool-1-thread-1正在被執行中...

pool-1-thread-1正在被執行中...

pool-1-thread-1正在被執行中...

pool-1-thread-1正在被執行中...

pool-1-thread-1正在被執行中...

pool-1-thread-1正在被執行中...

pool-1-thread-1正在被執行中...

pool-1-thread-1正在被執行中...

pool-1-thread-1正在被執行中...

pool-1-thread-1正在被執行中...

去掉sleep後:生成多個執行緒

pool-1-thread-1正在被執行中...

pool-1-thread-6正在被執行中...

pool-1-thread-7正在被執行中...

pool-1-thread-4正在被執行中...

pool-1-thread-5正在被執行中...

pool-1-thread-3正在被執行中...

pool-1-thread-2正在被執行中...

pool-1-thread-8正在被執行中...

pool-1-thread-10正在被執行中...

pool-1-thread-9正在被執行中...

固定數量的執行緒池    executors.newfixedthreadpool(int n);

**變更:

executorservice chachethreadpool = executors.newfixedthreadpool(3);
指定數量的執行緒池。

輸出:

pool-1-thread-1正在被執行中...

pool-1-thread-2正在被執行中...

pool-1-thread-3正在被執行中...

pool-1-thread-1正在被執行中...

pool-1-thread-2正在被執行中...

pool-1-thread-3正在被執行中...

pool-1-thread-1正在被執行中...

pool-1-thread-2正在被執行中...

pool-1-thread-3正在被執行中...

pool-1-thread-1正在被執行中...

排程執行緒池,支援定時及週期性任務執行  executors.newscheduledthreadpool(int n):

scheduledexecutorservice  chachethreadpool = executors.newscheduledthreadpool(3);

try

},3,timeunit.seconds);

}} catch (exception e)

scheduledexecutorservice  chachethreadpool = executors.newscheduledthreadpool(4);

try

},1,3,timeunit.seconds);

}} catch (exception e)

單執行緒執行緒池    executors.newsinglethreadexecutor()

executorservice chachethreadpool = executors.newsinglethreadexecutor();

try

});}

} catch (exception e)

單執行緒執行緒池只能同時執行乙個執行緒。

自定義執行緒池    threadpoolexecutor和blockingqueue連用

1. 緩衝佇列blockingqueue簡介:

blockingqueue是雙緩衝佇列。blockingqueue內部使用兩條佇列,允許兩個執行緒同時向佇列乙個儲存,乙個取出操作。在保證併發安全的同時,提高了佇列的訪問效率。

2. 常用的幾種blockingqueue:

3. 自定義執行緒池(threadpoolexecutor和blockingqueue連用):

自定義執行緒池,可以用threadpoolexecutor類建立,它有多個構造方法來建立執行緒池。

常見的建構函式:threadpoolexecutor(int corepoolsize, int maximumpoolsize, long keepalivetime, timeunit unit, blockingqueueworkqueue)

public class threadcachepooltest 

}class threadtest implements runnable catch (exception e)

}}

輸出:

pool-1-thread-1執行中..

pool-1-thread-2執行中..

執行緒及執行緒池的幾種建立方法

jdk8提供了五種建立執行緒池的方法 1.建立乙個定長線程池,可控制線程最大併發數,超出的執行緒會在佇列中等待。public static executorservice newfixedthreadpool int nthreads 特點 2.jdk8新增 會根據所需的併發數來動態建立和關閉執行緒...

執行緒池的幾種使用方式介紹

一 執行緒池的優點 關於執行緒池的使用優點網路上介紹的有很多,可以歸結為以下幾點 1.減少在建立和銷毀執行緒上所花的時間及系統資源的開銷。2.提高執行緒的可管理性,對執行緒進行統一的分配 調優和監控,從而也提高相應速度。二 執行緒池的uml圖和使用方式 執行緒池的uml圖如下,使用執行緒池的方式總共...

執行緒池幾種配置引數的理解

建立threadpoolexecutor可以通過構造方法和executors的靜態方法。構造方法 public threadpoolexecutor int corepoolsize,intmaximumpoolsize,long keepalivetime,timeunit unit,blocki...