|
|
1
15
没有优雅的方式可以做到这一点。
一个简单但不优雅的方法是编写一个Java流包装器,它限制从包裹流读取字节的速率。例如,如果要限制为每秒1000个字节,则
值得注意的是,像这样的节流率既有负面影响,也有正面影响。消极方面:
|
|
|
2
15
理论:Token Bucket Algorithm 是限制下载带宽的一种方法。 你应该阅读 this article :它解释了该算法的使用。 实施:来自Google Guava的Ratelimitergoogle guava 22.0包括 RateLimiter 但是它仍然是beta版本。 来自API文档: 例如,假设我们有一个要执行的任务列表,但我们不希望每秒提交超过2个:
另一个例子是,假设我们生成了一个数据流,我们希望将其限制为每秒5KB。这可以通过要求每字节一个许可证,并指定每秒5000个许可证的速率来实现:
来自Apache Commons Lang v3的TimedseMaphoreApache Commons Lang v3包括 TimedSemaphore 可用于实现速率限制的类。 |
|
|
3
3
可能的解决方案是使用 代理服务器 这限制了带宽。如果需要完整的Java解决方案,可以使用简单的套接字Java代理服务器。 here 并使用thread.sleep或任何其他方式降低流进程的读/写速度。 |
|
|
4
0
看看这个线程: http://httpcomponents.10934.n7.nabble.com/throttlling-download-traffic-td18329.html 另外,如果您使用ApacheHTTPClient,您可以将其配置为使用gzip压缩并节省一些带宽。尤其是对于XML,这样传输的字节应该少得多。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |