2016-01-08 151 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