【发布时间】:2019-11-22 12:06:54
【问题描述】:
问题描述:我有一个程序是多线程调用外部接口获取数据,现在对方只支持6000次/分钟访问。如果访问次数超过,则没有数据。如果减少线程数,则不会超过。但是,该程序需要更高的效率。我想最大化程序的速度。我想设计我的代码来控制一分钟内访问的次数(比如5800次),试了很多方法,查了很多资料还是不能实现。有没有这方面的实施计划或框架?
【问题讨论】:
-
你能分享你的代码吗?您尝试了哪些方法?
-
如果操作是 IO 绑定的,添加更多线程将无济于事。否则,您可以在 1 分钟内处理 6k 个请求,这意味着您每秒最多可以处理 100 个请求。如果每个请求需要 5 毫秒,您可以在一秒钟内处理 200 个请求。由于 200 将导致一半的请求不返回数据,因此根据增量/经过的时间通过一些
sleep系统手动减慢它。知道单个线程可以处理多少个请求后,您可以相应地跨线程拆分请求以满足您的需求。 -
搜索
java throttle -
您目前是否以 6000(或更多)次/秒的速度轮询 相同的数据,或者您的用例是什么?另外,“更高的效率”是什么意思?
-
非常感谢,我按照@Andreas 的指导解决了这个问题。 Stackoverflow 也有类似的问题。stackoverflow.com/questions/1407113/…
标签: java