1. Runtime.getRuntime().availableProcessors();//获取cpu核心数


    maximumPoolSize取值依据
    CPU密集的意思是该任务需要大量的运算,没有阻塞,CPU一直全速运行。
    CPU密集任务只有在真正的多核CPU上才可能得到加速(通过多线程),
    在单核CPU上开多少个多线程任务都不可能得到加速,因为与运算能力就那些
    密集型任务配置尽可能少的线程数量:一般公式:CPU核数+1个线程的线程池

    只要不死使劲作类型
    io密集型方案1测试环境疯狂测试公式:cpu核心数*2
    io密集型方案2
    即该任务需要大量的io(数据库、redis等疯狂读写)会大量的阻塞
    单线程上运行io密集型任务会导致浪费大量的CPU运算力
    所以在io密集型任务中使用多线程可以大大加速程序运行,即使在单核CPU上,这种加速主要就是利用了被浪费的阻塞时间
    io密集型时,大部分线程被阻塞,故需要多配置线程数
    参考公式:CPU核心数/1-阻塞系数 阻塞系数在0.8~0.9之间
    比如8核CPU:8/(1-0.9) = 80个线程数

    1. private static ThreadFactory factory = new ThreadFactoryBuilder().setNameFormat("线程名称-%s").build();
    2. private static ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(2,
    3. 5, 1L,
    4. TimeUnit.SECONDS, new LinkedBlockingQueue<>(3),
    5. factory, new ThreadPoolExecutor.CallerRunsPolicy());
    6. public static void main(String[] args) {
    7. threadPoolExecutor.execute(() -> {
    8. //
    9. });
    10. }