// 取得核心數量
final int numberOfCores = Runtime.getRuntime().availableProcessors();
// 阻塞係數(計算型爲0,IO 型爲0~1)
final double blockingCoefficient = 0;
// 計算線程池大小
final int poolSize = (int) (numberOfCores / (1 - blockingCoefficient));線程
final List<Callable<String>> partitions = new ArrayList<Callable<String>>();ci
ExecutorService executorPool = Executors.newFixedThreadPool(poolSize);get
// 此處循環添加任務
partitions.add(new Callable<String>(){
public String call() throws Exception {
// 業務處理
return "";
}
});it
// 放入線程池
final List<Future<String>> futures=executorPool.invokeAll(partitions);io
// 對運行結果進行處理
for(Future<String> future : futures){
String result=future.get();
}List
// 關閉線程池
executorPool.shutdown();線程池