zoukankan      html  css  js  c++  java
  • java threadpool 线程池核心参数

     /**
             * corePoolSize 保留在池中的线程数 即使处于空闲状态 除非设置了allowCoreThreadTimeOut
             *
             * maximumPoolSize *池中允许的最大线程数
             *
             * keepalivueTime 存活时间 如果当前线程大于core的数量
             *          释放空闲的线程 maximumPoolsize-corePoolSize 只要线程空闲大于指定的keepAlivuetime
             * unit:时间单位
             * BlockingQUeue<Runnable> workQueue 阻塞队列 如果任务有很多 就会将目前多的任务放在队列里面
             *      只要有线程空闲,就会去队列里面取出新的任务继续执行
             * threadFactory 线程创建工厂
             * RejectedExecutionHandler 如果队列满了 按照我们指定得拒绝策略拒绝指定任务
             *
             * 工作顺序
             * 1)、线程池创建好 准备好core数量的核心线程,准备接受任务
             * 1.1、core满了 就将在进来的任务放入阻塞队列中 空闲的core就会自己去阻塞队列获取任务执行
             * 1.2、阻塞队列满了 就直接开新线程执行 最大只能开到max指定数量
             * 1.3、max满了就用RejectedExecutionHandler 拒绝任务
             * 1.4、max都执行完成,有很多空闲 指定时间以后keepAlivueTime以后 释放max-core(195)这些线程
             *
             *       new LinkedBlockingQueue<>() 默认是Integer最大值 内存不够
             *
             *       一个线程池 core:7 max:20 queue:50 100并发进来怎么分配
             *       7个会立即得到执行 50个进入队列 再开13个进行执行,剩下的30个就使用拒绝策略
             *       如果不想抛弃还要执行 CallerRunsPolicy 同步方式
             */
            //最原始的方式:
            ThreadPoolExecutor executor = new ThreadPoolExecutor(5,
                    200,
                    10, TimeUnit.SECONDS,
                    new LinkedBlockingDeque<>(100000),
                    Executors.defaultThreadFactory(),
                    new ThreadPoolExecutor.AbortPolicy());
    
    
            //快速创建线程池
              Executors.newCachedThreadPool(); //core是0 所有都可回收
              Executors.newFixedThreadPool(10);//固定大小 core=max 都不可以回收
              Executors.newScheduledThreadPool(10); //定时任务的线程池
              Executors.newSingleThreadExecutor(); //单线程的线程池,后台从队列里面获取任务 挨个执行
  • 相关阅读:
    同步与异步 & 阻塞与非阻塞
    Memcached和Redis比较
    PHP安全之Web攻击
    搭建LNAMP环境(七)- PHP7源码安装Memcached和Memcache拓展
    PHP安装mysql.so扩展
    MySQL基础笔记
    CGI概念
    Nginx与Apache比较
    Nginx重写
    负载均衡session会话保持方法
  • 原文地址:https://www.cnblogs.com/xiaodu9499/p/14807717.html
Copyright © 2011-2022 走看看