java每秒限流_java限流工具类
代码
import com.google.common.util.concurrent.RateLimiter;
import java.util.concurrent.ConcurrentHashMap;
/**
* 限流工具类
* @author ZhangShuzheng
* @date 2018/8/13
*/
public class RateLimiterManager {
private static ConcurrentHashMap<String, RateLimiter> manager = new ConcurrentHashMap<>();
/**
* 限流
* @param key 限流key
* @param qps 频率:每秒返回锁次数
*/
public static void getLock(String key, int qps) {
ConcurrentHashMap.KeySetView<String, RateLimiter> keys = manager.keySet();
if (keys.contains(key)) {
RateLimiter rateLimiter = manager.get(key);
rateLimiter.acquire();
} else {
manager.put(key, RateLimiter.create(qps));
}
}
}
使用示例
public static void main(String[] args) {
int count = 100;
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService threadPoolExecutor = new ThreadPoolExecutor(5, 200,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
threadPoolExecutor.execute(() -> {
for (int i = 0; i < count; i++) {
RateLimiterManager.getLock("key1", 10);
System.out.println("111111111111111111111111");
}
});
threadPoolExecutor.execute(() -> {
for (int i = 0; i < count; i++) {
RateLimiterManager.getLock("key2", 1);
System.out.println("222222222222222222222222");
}
});
}
输出结果
222222222222222222222222
111111111111111111111111
111111111111111111111111
111111111111111111111111
111111111111111111111111
111111111111111111111111
111111111111111111111111
111111111111111111111111
111111111111111111111111
111111111111111111111111
222222222222222222222222
111111111111111111111111
111111111111111111111111
111111111111111111111111
111111111111111111111111
111111111111111111111111
111111111111111111111111
111111111111111111111111
111111111111111111111111
java每秒限流_java限流工具类相关推荐
- java获取excle表格对象_Java使用excel工具类导出对象功能示例
本文实例讲述了Java使用excel工具类导出对象功能.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.poi.ss.use ...
- java unicode转韩文_Java 使用hutool工具类代替commons-text进行Json 中文 Unicode转换
可选的工具 中文转换Unicode,目前有两种方式,自写工具类或引入第三方包,这里我推荐引入三方包,因为使用mvn配置非常简单,网上搜到的大多数都是自己写的工具类,试了一个,效果不是很好,因为把ASC ...
- Java基础巩固(二)异常,多线程,线程池,IO流,Properties集合,IO工具类,字符流,对象流,Stream,Lambda表达式
一.异常,多线程 学习目标 : 异常的概述 异常的分类 异常的处理方式 自定义异常 多线程入门 1 异常的概述 1.1 什么是异常? 异常就是程序出现了不正常情况 , 程序在执行过程中 , 数据导致程 ...
- java中bitconverter_【Java】BitConverter(数字转字节数组工具类)
import java.nio.ByteOrder; import java.nio.charset.Charset; /** * 数字转字节数组工具类 */ public class BitConv ...
- java 自定义json解析注解 复杂json解析 工具类
java 自定义json解析注解 复杂json解析 工具类 目录 java 自定义json解析注解 复杂json解析 工具类 1.背景 2.需求-各式各样的json 一.一星难度json[json对象 ...
- java sm3国密算法加密、验证工具类
java sm3国密算法加密.验证工具类 说明 maven依赖 完整代码 测试 说明 由于本人并不专于算法和密码学,所以如果发现工具类存在问题或者可优化地方,欢迎评论处提出. 工具类也可以直接使用封装 ...
- Java操作百万数据量Excel导入导出工具类(程序代码教程)
Java操作百万数据量Excel导入导出工具类(程序代码教程): # 功能实现1.自定义导入数据格式,支持配置时间.小数点类型(支持单/多sheet)(2种方式:本地文件路径导入(只支持xls.xls ...
- Java 切割身份证地址,省市区 详细地址工具类
工具类①: AddressAnalysisUtil.java import org.apache.commons.lang3.StringUtils; import java.util.Arrays; ...
- java中使用jxl导出excel表格的工具类(全网唯一亲测可用,在原来基础上扩展)
java中后台导出excel的话,有两种方案,一是使用poi(不过由于是windows版本的,存在不兼容,但功能更多,更强大),而是使用jxl(纯java编写,不过兼容,简单一些),可以设置输出的ex ...
最新文章
- Kibana:分析及可视化日志文件
- 【转载】闲话操作系统(二)
- 【7.19 graphshortestpath graphallshortestpaths函数】matlab 求最短路径函数总结
- vbs获取程序窗体句柄_[VBA][高阶应用][类模块]自绘窗体进度条类cProgressBar.cls
- 制作系统盘,重装新系统。
- win8计算机丢失xinput1+3.dll,xinput1 3.dll丢失怎么办 win8下xinput1 3.dll丢失解决方法
- 火柴 UVa11375
- linux ps ax tl,Linux常用指令 - osc_wa6fkyf0的个人空间 - OSCHINA - 中文开源技术交流社区...
- python打印日历代码_带tkinter的日历(打印所选日期)
- Moon一个无视Linq,无视实体类的设计思路.(不要错过,看了之后, 让我们从此以后不再羡慕linq to entiy!)...
- Java实现俄罗斯方块小游戏。(附完整源代码)
- MATLABr2006a序列号
- xpos兼容android最高版本,[原创]学习篇-xposed框架及高版本替代方案
- WIN10 激活系统
- 天津大学关于博士、硕士学位论文格式
- Python编写中国象棋棋盘(可视化页面)
- 改善网站安全性的5种方法
- c语言程序设计青岛职业技术学院,2020年知道C语言程序设计(青岛职业技术学院)答案公众号...
- JVM内存与垃圾回收篇——直接内存
- NumPy学习笔记(五)—— choice()函数
热门文章
- Synchronize对象锁异步
- Java多线程两种实现方式的对比
- 计算机组成原理sop,MacBERT:MLM as correction BERT
- 32M内存 跑linux内核,32位Linux单进程4G内存限制
- 盘点 12 个 GitHub 上的高仿项目
- 2020 年腾讯新增 20 亿行代码,鹅厂第一编程语言还是它
- python弹出警告框_selenium+webdriver+python 中警告框的处理方法
- oracle 错误: ORA-12899:始终提示字段太大
- 设计模式之单例设计模式(饿汉式)
- Java连接FTP服务器并且实现对其文件的上传和下载