asynchttpclient java_关于AsyncHttpClient的误解

1. setMaximumConnectionsPerHost。这个参数在用常见的netty provider和apache provider时根本没有用。官方说Grizzly provider有用。没试过,反正我们没用Grizzly,比较坑。

2. setMaximumConnectionsTotal。超过这个限制时直接报错,根本不是想象中的那样排队,又是一个大坑。真的要限制并发数得用setExecutorService直接设置线程池。

再说线程池ThreadPoolExecutor,有三个关键参数:coreSize,maxSize,queue。

直观理解:平时保持coreSize个线程,多余的任务来了增加线程,增加到maxSize后排队,队列满了后拒绝。超过coreSize的idle线程结束掉。

结果人家根本不是这么设计的。人家是:平时保持coreSize个线程,多余的任务来了排队,队伍满了增加线程,线程到了maxSize后再放不下拒绝。好奇葩的设定。按照这个设定maxSize基本没啥用,因为一般倾向于把队列放得比较大,防止任务被拒绝。

程序跑了好久,今天并发上来出了bug,深挖一下被雷到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值