解读阿里巴巴Java手册:为什么不建议使用Executors创建线程池?
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创建线程池?相关推荐
- 为什么阿里巴巴要禁用 Executors 创建线程池?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 转自:掘金,作者:何甜甜在吗 juejin.im/post/5dc ...
- 为什么阿里巴巴要禁用Executors创建线程池?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:何甜甜在吗 juejin.im/post/5dc41c165 ...
- 阿里巴巴为什么要禁用 Executors 创建线程池?
作者:何甜甜在吗 www.juejin.im/post/5dc41c165188257bad4d9e69 看阿里巴巴开发手册并发编程这块有一条:线程池不允许使用 Executors 去创建,而是通过T ...
- 为什么阿里巴巴禁止使用 Executors 创建线程池,而是通过 ThreadPoolExecutor 方式?...
>>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. 1. 通过Executors创建线程池的弊端 在创建线 ...
- Java多线程学习总结(7)——创建线程池的正确姿势
一. 通过Executors创建线程池的弊端 在创建线程池的时候,大部分人还是会选择使用Executors去创建. 下面是创建定长线程池(FixedThreadPool)的一个例子,严格来说,当使用如 ...
- java 阿里线程池_为什么阿里不允许使用 Executors 创建线程池?
你知道为什么阿里不允许Executors去创建线程池吗? 阿里巴巴开发手册关于线程池有这样一条规定: 线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方 ...
- 为什么阿里Java规约禁止使用Java内置Executors创建线程池?
IDEA导入阿里规约插件,当你这样写代码时,插件就会自动监测出来,并给你红线提醒. 告诉你手动创建线程池,效果会更好. 在探秘原因之前我们要先了解一下线程池 ThreadPoolExecutor 都有 ...
- Java 通过Executors创建线程池的种类
java通过Executors可以创建四种线程池: newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需求,可灵活回收空闲线程,若无可回收,则新建线程. newFix ...
- Java多线程(四):使用Executors创建线程池及其注意事项
文章目录 1. 简介 2. newCachedThreadPool 3. newFiexedThreadPool 4. newSingleThreadExecutor 5. newScheduledT ...
- 为什么阿里巴巴Java开发手册中不允许用Executors去创建线程池?
在我阅读阿里巴巴开发手册的时候,有一段关于多线程的描述: 线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样 的处理方式让写的同学更加明确线程池 ...
最新文章
- tomcat简单配置
- c语言中将数组设为空,求助~~ 如何把数组变成动态输入的?
- 如何使用Cisco命令阻止访问特定网站
- php程序员笔试题库,2017年初级PHP程序员笔试题
- 透过现象看本质,如何设计一款病毒式裂变产品?
- 【问题记录】进行mybatis实例查询测试时Error opening session. Cause: java.lang.NullPointerException
- delphi excel取批注所在的行列_excel技巧教程丨34个常用Excel小技巧,助你玩转职场!...
- linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put)
- 东方第一等幻象骑士团
- 前端-requests-flask对应关系 HTTPTokenAuth
- ITextSharp导出PDF表格和图片(C#)
- [转载] Python字符串的截取
- 实践项目2 图书管理系统
- 打开lol一直连接服务器失败怎么回事,LOL英雄联盟连接失败无法连接服务器解决办法...
- 从π与e开始 理解正态分布
- 2018年六级第三套自行车翻译
- 新茶饮迎来新玩家,柠檬茶酸涩难甜
- MySQL按照字符排序,英文,中文,数字综合排序
- 单片机简单Log日志封装
- 该设备正在使用中。请关闭可能使用该设备的所有程序或窗口,然后重试。