JDK 线程池小结

    xiaoxiao2022-07-02  99

    1、工具类 Executors 提供几种生成线程池的方法,这些线程池都是统一封装的同一个类,具体如下:

    public static ExecutorService newSingleThreadExecutor() { //单线程线程池 return new FinalizableDelegatedExecutorService (new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>())); } public static ExecutorService newFixedThreadPool(int nThreads) { //固定线程数线程池 return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); //列表阻塞队列 } public static ExecutorService newCachedThreadPool() { //缓存线程池 return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); //无缓冲区队列 SynchronousQueue } /** *ThreadPoolExecutor 构造方法,及其各参数说明 * **/ public ThreadPoolExecutor(int corePoolSize, //核心线程数,线程池最小数量,无任务情况下也会存在 int maximumPoolSize, //线程池最大数量,当任务很多时,最多创建数目 long keepAliveTime, //线程的最大空闲时间 TimeUnit unit, // BlockingQueue<Runnable> workQueue) { //阻塞队列 this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); //defaultThreadFactory 创建线程的工场 }

    实际运用是 ForkJoinPool , 1、使用场景,游戏详情,客户下单,支付回调等多路并行

    线程池注意点: 1、设置core大小 2、设置阻塞任务队列大小 3、选择拒绝策略

    最新回复(0)