哈尔滨网站建设公司oeminc,光谷做网站推广怎么样,崇义县网站建设,网站制作网站价格大型并发项目 不能使用Executors 通过ThreadPoolExector的方式
核心线程配置方式:
计算密集型的任务 核心线程数量 CPU的核数 1 IO密集型的任务 核心线程数量 CPU的核数*2 演示: Callable
import java.util.concurrent.Callable;public class MyCallable implements Callab…大型并发项目 不能使用Executors 通过ThreadPoolExector的方式
核心线程配置方式:
计算密集型的任务 核心线程数量 CPU的核数 1 IO密集型的任务 核心线程数量 CPU的核数*2 演示: Callable
import java.util.concurrent.Callable;public class MyCallable implements CallableString {private int n;public MyCallable(int n){this.n n;}Overridepublic String call() throws Exception{int sum 0;for (int i 0; i n; i) {sum i;}return Thread.currentThread().getName() 输出sum;}
}使用:
import java.util.concurrent.*;public class ThreadpoolTest3 {public static void main(String[] args) throws Exception {/** public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueueRunnable workQueue)*///创建线程池对象/** ExecutorService pool new ThreadPoolExecutor(3,5,8,TimeUnit.SECONDS,new LinkedBlockingQueue(4),Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());//线程池满了的拒绝策略*///使用工具类创建线程池//大型并发项目 不能使用Executors 通过ThreadPoolExector的方式ExecutorService pool Executors.newFixedThreadPool(3);//计算密集型的任务 核心线程数量 CPU的核数 1//IO密集型的任务 核心线程数量 CPU的核数*2//线程池处理Runnable任务FutureString f1 pool.submit(new MyCallable(100));FutureString f2 pool.submit(new MyCallable(200));FutureString f3 pool.submit(new MyCallable(300));FutureString f4 pool.submit(new MyCallable(400));System.out.println(f1.get());System.out.println(f2.get());System.out.println(f3.get());System.out.println(f4.get());pool.shutdown(); //当所有线程都被处理完 关闭//pool.shutdownNow(); //立即关闭 返回未处理的线程}
}效果: 对比参考:线程池处理Callable任务-CSDN博客
线程池处理Runnable任务-CSDN博客