java开发 多线程
int i1 = Runtime.getRuntime().availableProcessors(); //获取 cpu的 数量
int threadNums = 2*i1 + 1;
//定义线程池 是 cup个数的 2倍+1
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(threadNums);
for (int i = 0;i< list.size();i++) {
//此处用 lambda 的表示方式
Runnable newRunnable = () -> {
//执行你的方法
};
fixedThreadPool.execute(newRunnable); // 局部线程池,使用完后记得要关闭
}
fixedThreadPool.shutdown();// 局部线程池,使用完后记得要关闭
boolean isFlag = true;
while (isFlag){ //主线程 等待 线程池执行完成在继续执行
if (fixedThreadPool.isTerminated()){
isFlag = false;
}
}
alibba推荐多线程方式
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat(“collect-pool-%d”).build();
//Common Thread Pool
ExecutorService pool = new ThreadPoolExecutor(threadNums,
200,
0L,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue(1024),
namedThreadFactory,
new ThreadPoolExecutor.AbortPolicy());