Executors 是一个Java中的工具类。提供工厂方法来创建不同类型的线程池。

从上图中也可以看出,Executors的创建线程池的方法,创建出来的线程池都实现了ExecutorService接口。

可以发现,其实底层确实是通过LinkedBlockingQueue实现的:LinkedBlockingQueue是一个用链表实现的有界阻塞队列,容量可以选择进行设置,不设置的话,将是一个无边界的阻塞队列,最大长度为Integer.MAX_VALUE。如果我们不设置LinkedBlockingQueue的容量的话,其默认容量将会是Integer.MAX_VALUE。

newCachedThreadPool和newScheduledThreadPool这两种方式创建的最大线程数可能是Integer.MAX_VALUE,而创建这么多线程,就有可能导致内存溢出。

避免使用Executors创建线程池,主要是避免使用其中的默认实现,那么我们可以自己直接调用ThreadPoolExecutor的构造函数来自己创建线程池。在创建的同时,给BlockQueue指定容量就可以了。

Java ThreadPoolExecutor线程池的使用

解读阿里巴巴Java手册:为什么不建议使用Executors创建线程池?相关推荐

  1. 为什么阿里巴巴要禁用 Executors 创建线程池?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 转自:掘金,作者:何甜甜在吗 juejin.im/post/5dc ...

  2. 为什么阿里巴巴要禁用Executors创建线程池?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:何甜甜在吗 juejin.im/post/5dc41c165 ...

  3. 阿里巴巴为什么要禁用 Executors 创建线程池?

    作者:何甜甜在吗 www.juejin.im/post/5dc41c165188257bad4d9e69 看阿里巴巴开发手册并发编程这块有一条:线程池不允许使用 Executors 去创建,而是通过T ...

  4. 为什么阿里巴巴禁止使用 Executors 创建线程池,而是通过 ThreadPoolExecutor 方式?...

    >>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. 1. 通过Executors创建线程池的弊端 在创建线 ...

  5. Java多线程学习总结(7)——创建线程池的正确姿势

    一. 通过Executors创建线程池的弊端 在创建线程池的时候,大部分人还是会选择使用Executors去创建. 下面是创建定长线程池(FixedThreadPool)的一个例子,严格来说,当使用如 ...

  6. java 阿里线程池_为什么阿里不允许使用 Executors 创建线程池?

    你知道为什么阿里不允许Executors去创建线程池吗? 阿里巴巴开发手册关于线程池有这样一条规定: 线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方 ...

  7. 为什么阿里Java规约禁止使用Java内置Executors创建线程池?

    IDEA导入阿里规约插件,当你这样写代码时,插件就会自动监测出来,并给你红线提醒. 告诉你手动创建线程池,效果会更好. 在探秘原因之前我们要先了解一下线程池 ThreadPoolExecutor 都有 ...

  8. Java 通过Executors创建线程池的种类

    java通过Executors可以创建四种线程池: newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需求,可灵活回收空闲线程,若无可回收,则新建线程. newFix ...

  9. Java多线程(四):使用Executors创建线程池及其注意事项

    文章目录 1. 简介 2. newCachedThreadPool 3. newFiexedThreadPool 4. newSingleThreadExecutor 5. newScheduledT ...

  10. 为什么阿里巴巴Java开发手册中不允许用Executors去创建线程池?

    在我阅读阿里巴巴开发手册的时候,有一段关于多线程的描述: 线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样 的处理方式让写的同学更加明确线程池 ...

最新文章

  1. tomcat简单配置
  2. c语言中将数组设为空,求助~~ 如何把数组变成动态输入的?
  3. 如何使用Cisco命令阻止访问特定网站
  4. php程序员笔试题库,2017年初级PHP程序员笔试题
  5. 透过现象看本质,如何设计一款病毒式裂变产品?
  6. 【问题记录】进行mybatis实例查询测试时Error opening session. Cause: java.lang.NullPointerException
  7. delphi excel取批注所在的行列_excel技巧教程丨34个常用Excel小技巧,助你玩转职场!...
  8. linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put)
  9. 东方第一等幻象骑士团
  10. 前端-requests-flask对应关系 HTTPTokenAuth
  11. ITextSharp导出PDF表格和图片(C#)
  12. [转载] Python字符串的截取
  13. 实践项目2 图书管理系统
  14. 打开lol一直连接服务器失败怎么回事,LOL英雄联盟连接失败无法连接服务器解决办法...
  15. 从π与e开始 理解正态分布
  16. 2018年六级第三套自行车翻译
  17. 新茶饮迎来新玩家,柠檬茶酸涩难甜
  18. MySQL按照字符排序,英文,中文,数字综合排序
  19. 单片机简单Log日志封装
  20. 该设备正在使用中。请关闭可能使用该设备的所有程序或窗口,然后重试。

热门文章

  1. 巴斯克维尔字体标本案例研究
  2. PE制作实录 —— 定义我的 PE 工具箱
  3. 2019年软件评测师考试大纲
  4. 如何开发自己的股票软件103
  5. 仿安居客好租网房产源码
  6. cocosbuilder3.0使用小记
  7. 种子文件多服务器,别再问我什么是 BT 种子了!一次性全告诉你
  8. 编译原理第四章--自上而下的语法分析
  9. Android权限管理原理
  10. 百度杀毒软件2013低调发布 仅面向泰国市场推出