RT, 说的就是 Executors.newFixedThreadPool()的那几个实现.
要么就是队列是无界的(newFixedThreadPool,newSingleThreadExecutor)
要么就是线程池数量没有上限(newCachedThreadPool)
结果就是生产里大家基本都不会用 Executors 里的这几个实现,不然挺容易内存爆掉. 估计不少人都遇到过这个问题.所以阿里的规范里要求都是自己用 ThreadPoolExecutor 实现一个,放一个有界队列进去.
我的问题就是,为啥 JDK 的维护者不多加个构造函数,允许指定队列上限的?
比如说 Executors.newFixedThreadPool(int queueCapcity)
1
smallyu 2020 年 9 月 25 日
?
|
2
codebigbang 2020 年 9 月 25 日 via Android
因为开发者要保证方法适用于大部分人,有特殊需求的可以按照源码自己修改
|
3
EminemW 2020 年 9 月 25 日
?怎么我的线程池可以传最大线程数
|
4
hodur 2020 年 9 月 26 日
LinkedBlockingQueue 是无界的吗
|
5
anthow 2020 年 9 月 26 日
方便啊
|
6
youxiachai 2020 年 9 月 26 日
LinkedBlockingQueue 我白用了?
|
7
youxiachai 2020 年 9 月 26 日
难怪我看起来这么怪....
Executors.newFixedThreadPool(int queueCapcity) 原来是 android 才支持? |
8
youxiachai 2020 年 9 月 26 日
看错了..忽略..应该有才对啊.... lz 用的 jdk 版本是多少,为啥会没有..
|
9
xiaofan2 2020 年 9 月 26 日
lz 的无界的意思是如何不传参数默认的参数是 Integer.MAX_VALUE 吧
|
10
wysnylc 2020 年 9 月 27 日
Executors.newWorkStealingPool(200)
记得经常更新下自己的 jdk 和技术 |
11
huntcool001 OP @youxiachai
https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/concurrent/Executors.html JDK15 的文档, 没有 Executors.newFixedThreadPool(int queueCapcity) |
13
mightofcode 2020 年 9 月 29 日
可能因为太懒了吧
|