在线Java调试:
Java 在线调试工具_在线测试工具 - IT屋https://www.it1352.com/Onlinetools/details/4
示例:
//'main' method must be in a class 'Rextester'.
//Compiler version 1.8.0_111
import java.lang.*;
class Rextester {
private static class TokenBucketFlowManager {
private static long sLastTime = System.currentTimeMillis();
private static int sBucketCapability = 100;
private static float sTokensCount = 0;
private static float sTokenCreateRate = 0.1f;
public static void setCapability(int size) {
sBucketCapability = size;
}
public static void setRate(int qps) {
sTokenCreateRate = qps / 1000.0f;
}
public static boolean grant() {
long now = System.currentTimeMillis();
float newToken = (now - sLastTime) * sTokenCreateRate;
sLastTime = now;
sTokensCount = Math.min(sBucketCapability, sTokensCount + newToken);
if (sTokensCount >= 1.0f) {
--sTokensCount;
return true;
} else {
return false;
}
}
}
public static void main(String[] args) {
TokenBucketFlowManager.setCapability(100);
TokenBucketFlowManager.setRate(100);
for (int i = 0; i < 100; i++) {
new Thread(new Runnable() {
@Override
public void run() {
if (TokenBucketFlowManager.grant()) {
System.out.println("执行业务逻辑");
} else {
System.out.println("限流");
}
}
}).start();
}
}
}
参考文献: