我尝试使用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丢弃我的数据包?
答案 0 :(得分:2)
RateLimiter.tryAcquire
不会阻止,如果许可证不立即可用,则返回false
。你可能只是写了像
if (rateLimiter.tryAcquire(packet.length)) {
networkService.send(packet);
}