固定线程数线程池写法

// 取得核心数量
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>>();

ExecutorService executorPool = Executors.newFixedThreadPool(poolSize);

// 此处循环添加任务
partitions.add(new Callable<String>(){

    public String call() throws Exception {
        // 业务处理
        return "";
    }
});


// 放入线程池
final List<Future<String>> futures=executorPool.invokeAll(partitions);

// 对运行结果进行处理
for(Future<String> future : futures){
    String result=future.get();
}

// 关闭线程池
executorPool.shutdown();

posted @ 2015-07-17 14:19  行者吴江  阅读(1270)  评论(0编辑  收藏  举报