我正在尝试使用 RateLimiter以每秒特定限制丢弃数据包。
final RateLimiter rateLimiter = RateLimiter.create(5000.0); // rate = 5000 permits per second
void submitPacket(byte[] packet) {
rateLimiter.acquire(packet.length);
networkService.send(packet);
}
问题在于,rateLimiter.acquire 会阻塞而不是丢弃数据包。如果不存在所需的带宽,如何配置rateLimiter 来丢弃我的数据包?
最佳答案
RateLimiter.tryAcquire
不会阻止,而是在许可证不能立即可用时返回 false
。你可能会写这样的东西
if (rateLimiter.tryAcquire(packet.length)) {
networkService.send(packet);
}
关于java - 如何使用 RateLimiter 丢弃数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34684279/