2016-01-08 117 views
0

我试图用RateLimiter以每秒特定的限制丢弃数据包。如何使用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丢弃我的数据包?

回答

2

RateLimiter.tryAcquire不会阻止,而是返回false如果许可证没有立即可用。你可能会写一些像

if (rateLimiter.tryAcquire(packet.length)) { 
    networkService.send(packet); 
} 
+0

感谢您指出这一点,我应该更仔细阅读API! – Grammin