java队列实现限流,java中应对高并发的两种策略
目的:提高可用性
通过ExecutorService实现队列泄洪
//含有20个线程的线程池
private ExecutorService executorService = Executors.newFixedThreadPool(20);
将有并发压力的下游代码放入到线程池的submit方法中,如下:
//同步调用线程池的submit方法 简单实现 拥塞窗口为20的队列泄洪(一个服务器同一时间只能处理20个请求,其他请求队列等待)
Future future = executorService.submit(new Callable() {
//此处调用有并发压力的下游接口
}
return null;
}
});
try {
//获取任务的执行结果
future.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
通过Guava RateLimit 负载均衡的情况下,在单机内部实现限流
private RateLimiter orderCreateRateLimiter = RateLimiter.create(300);//限制300tps
在方法入口内加上以下代码:
//入口处限流
if(!orderCreateRateLimiter.tryAcquire()){
//抛出异常;
}
最后:
这里只简单描述了如何最简单的使用,降低高并发对系统的压力,没有剖析内部源码实现,望谅解
标签:20,应对,队列,submit,并发,限流,线程,java
来源: https://www.cnblogs.com/wuba/p/11516985.html
java队列实现限流,java中应对高并发的两种策略相关推荐
- 使用限流方式限制流量,完美应对高并发中请求暴涨难题
前言: 在大量并发的环境下,为了防止由于请求暴涨,导致系统崩溃从而引起雪崩,一般会对流量做一定的限制操作.比如等待.排队.降级.拒绝服务.限流等. 我们这节主要讲的是限流,限流的措施有很多,我这里分为 ...
- 视频教程-极简Java五:IO流-Java
极简Java五:IO流 华中科技大学毕业,十余年行业经验,曾带领团队完成CPN客户管理系统,并完成农业银行网站,乐途旅游网等网站的开发,在Java领域有深厚的积累,授课风格深入浅出,直指核心. 夏昊 ...
- java random构造方法_Java中的Random()函数及两种构造方法
Java中存在着两种Random函数: java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是 ...
- Java中的string定义的两种方法和区别
java中的String定义的两种方法和区别 第一种:new方式 String s1 = new String("hello world"); String s2 = new St ...
- 在java程序中定义的类有两种成员_java试题 急需答案 谢谢!!!
三.填空(每小题2分,共10分)1.在Applet中,创建一个具有10行45列的多行文本区对象ta的语句为:2.创建一个标识有"关闭"字样的标签对象gb的语句为.3.方法是一种仅有 ...
- Java中线程的创建有两种方式
Java中继承thread类与实现Runnable接口的区别 Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过 ...
- Redis如何实现分布式锁延时队列以及限流应用丨Redis源码原理|跳表|B+树|分布式锁|中间件|主从同步|存储原理
Redis如何实现分布式锁延时队列以及限流应用 视频讲解如下,点击观看: Redis如何实现分布式锁延时队列以及限流应用丨Redis源码原理|跳表|B+树|分布式锁|中间件|主从同步|存储原理|数据模 ...
- java定义一个长方形类,该类中具有长方形长宽两种属性,并具有相应的构造方法属性访问方法,计算长方形的周长和面积的方法,要求输出长是5,宽是4的长方形
定义一个长方形类,该类中具有长方形长宽两种属性,并具有相应的构造方法 属性访问方法,计算长方形的周长和面积的方法,要求输出长是5,宽是4的长方形 public class test3 {public ...
- Java通过图片url地址获取图片base64位字符串的两种方式
工作中遇到通过图片的url获取图片base64位的需求.一开始是用网上的方法,通过工具类Toolkit,虽然实现的代码比较简短,不过偶尔会遇到图片转成base64位不正确的情况,至今不知道为啥. 之后 ...
最新文章
- 修改 Oracle 数据库 sequence(序列) 的 increment (步长)
- css属性cusor
- 仿iOS中图标的抖动
- golang中的sync.WaitGroup
- 【Android APT】注解处理器 ( Element 注解节点相关操作 )
- Android Intent解析
- 转: Jenkins+Gradle实现android开发持续集成、打包
- Python二级笔记(11)
- 【软考高项】信息系统项目管理师 论文写作技巧分享 (上)
- 大话重构连载9:大布局你伤不起
- Linux的三种权限含义,Linux chmod命令及权限含义
- 实现100以内的素数输出(Python与C++对比)
- 获取手机唯一标识插件_非常强大的几款手机浏览器,适用于某些黑科技功能
- ANSYS workbench 有限元分析 学习
- U盘安装苹果系统教程,菜鸟一步一步也能成大牛
- 骁龙AR2平台解析:分布式架构开启轻量化AR眼镜新时代
- 分享两个无限制的免费快递查询接口
- 2021-05-20英文科技论文写作与学术报告Lecture 3习题答案
- C语言 getchar()函数详解
- windows defender might impact performance
热门文章
- wordcount linux java_linux下在eclipse上运行hadoop自带例子wordcount
- python 注释一段话_Python快速入门(一)
- R语言中dim函数_R语言--向量化计算(apply族函数)
- ant实例 jmeter_Jmeter+ant搭建环境
- redhat系统双网卡绑定
- Angular 8之升级和新功能摘要
- 计数排序与桶排序python实现
- 云主机tracert外网无返回需在安全组入方向加ICMP Time Exceeded TTLexpired in transit
- SpringBoot安装和创建简单的Web应用
- ASP.NET Session丢失问题原因及解决方案[转]