引入maven 依赖:
java模拟代码:public static void main(String[] args) throws ExecutionException, InterruptedException { //每秒最多允许93次请求 RateLimiter rateLimiter = RateLimiter.create(93); CountDownLatch latch = new CountDownLatch(1); //构建100个调用,同时发出 for (int i = 0; i < 105; i++) { new Thread(new Runnable() { @Override public void run() { try { //预备 latch.await(); //检查频率 // Preconditions.checkState(rateLimiter.acquire(), "令牌不足则等待"); Preconditions.checkState(rateLimiter.tryAcquire(), "令牌不足则立即返回"); //频率检查通过,执行业务代码 System.out.println("业务执行中..."); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } System.out.println("wait..."); Thread.sleep(5000); //go! latch.countDown(); }