記錄下執行緒的幾種形式以及寫法:
快取執行緒池 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...