请教下大佬们线程池的使用,有界队列满了的时候怎么办
java吧
全部回复
仅看楼主
level 11
行星🌌 楼主
就是消费速度低于生产速度,导致队列满了,这时候如果使用默认拒绝策略,会报错。那我们是否需要自定义策略,不断重试塞入队列? 有没大佬遇到过相应场景,指导下怎么处理
2021年04月17日 13点04分 1
level 8
使用执行自己的线程执行任务(callerrunspolicy)或者队列扩容。
2021年04月17日 15点04分 2
在自定义策略里面自己开线程跑,这样吗,如果经常会满,是不是就扩容比较好,扩容的话,是自己写程序进行动态扩容还是直接修改源码的队列初始化参数比较合理呢?
2021年04月17日 16点04分
level 11
看你自己的需求了,可以自定义策略
2021年04月17日 15点04分 3
我知道有自定义,但是不知道具体该怎么操作合理
2021年04月17日 16点04分
level 8
能让它停止生产嘛!不满再继续
2021年04月18日 00点04分 4
不是线程池满,是任务队列满
2021年04月18日 00点04分
@行星🌌 嗷处理好后麻烦告诉下解决方案谢谢🙏
2021年04月18日 00点04分
@我是老实人🙈 上面有大佬给了思路啊,队列扩容和自定义线程跑
2021年04月18日 00点04分
需要针对不通场景来设置的,有些任务是先落地,在执行,这种,直接拒绝后续再捞起就好
2021年04月18日 07点04分
level 1
我记得netty有实现很多这方面的自定义策略,可以借鉴一下
2021年04月18日 02点04分 5
level 8
线程池可以设置拒绝策略啊
2021年04月18日 03点04分 6
所以我是问拒绝之后怎么处理。。。
2021年04月18日 04点04分
@行星🌌 这个肯定是按照需求来啊 怎么可能做到通用
2021年04月18日 04点04分
@冬瓜南瓜哈密瓜 是啊,我就问遇到过的大佬们之前是怎么处理的,我没遇到过,所以问一下啊[泪]
2021年04月18日 04点04分
任务执行有很多种类,比如有些是先把任务落地,然后在执行,此时的就可以拒绝后,等下次捞起再执行就好了,不通场景,需要不通的处理方式
2021年04月18日 07点04分
level 7
可以写入日志
2021年04月18日 07点04分 7
level 10
一般不会拿这种不可靠的东西放任务的[阴险],服务挂了或者重发队列就丢了
2021年04月18日 07点04分 8
啥意思,没明白什么不可靠
2021年04月18日 09点04分
@行星🌌 服务挂了或者重启,队列里的东西就丢了
2021年04月18日 09点04分
@迪恩国王♂ 这个跟我说的没关系吧,你这种宕机导致的,是队列里面的任务,这种任务数据存数据库就好了啊,跑完后做个标记就知道了吧
2021年04月18日 09点04分
level 10
消费速度低于生产速度,所以削峰啊,走MQ限流啊
一般不会把队列放服务里,如果有补偿措施(丢就丢呗),如果没有补偿措施,服务挂了全丢了有啥意义
2021年04月18日 09点04分 9
level 6
Lru
2021年04月20日 00点04分 10
1