固定線程數線程池寫法

// 取得核心數量
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();線程池

相關文章
相關標籤/搜索