请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

acquire() <= 0 是不是有些问题?

视频中第135行开始的代码:

if (orderCreateRateLimiter.acquire() <= 0) {
	//...
}

如果没有到限流程度的话 acquire() 返回的应该是 0.0,是不是应该改成类似下面这样的逻辑呢?

if (orderCreateRateLimiter.acquire() != 0) {
	//...
}

正在回答 回答被采纳积分+3

1回答

龙虾三少 2019-06-25 11:40:12

返回值表示这一秒还剩下多少令牌,因此当还剩下的为0甚至为负的时候就应该限制流量


0 回复 有任何疑惑可以回复我~
  • 提问者 NickBurkhardt #1
    guava的acquire()返回值的意义好像是需要睡眠的时间,如果没有限流(还有令牌)则返回0。这个方法看起来应该不会返回负值吧。
    
    @return time spent sleeping to enforce rate, in seconds; 0.0 if not rate-limited 
    
    我把源码地址贴一下:https://github.com/google/guava/blob/master/guava/src/com/google/common/util/concurrent/RateLimiter.java#L302
    回复 有任何疑惑可以回复我~ 2019-06-27 15:51:40
  • 龙虾三少 回复 提问者 NickBurkhardt #2
    好的,非常感谢同学的反馈,应该使用tryAcquire方法判定返回值true or false,相关内容会尽快核实修订。
    回复 有任何疑惑可以回复我~ 2019-06-27 16:08:00
  • 提问者 NickBurkhardt 回复 龙虾三少 #3
    嗯辛苦您了
    回复 有任何疑惑可以回复我~ 2019-06-27 16:13:24
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号