目的:提高可用性

通过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中应对高并发的两种策略相关推荐

  1. 使用限流方式限制流量,完美应对高并发中请求暴涨难题

    前言: 在大量并发的环境下,为了防止由于请求暴涨,导致系统崩溃从而引起雪崩,一般会对流量做一定的限制操作.比如等待.排队.降级.拒绝服务.限流等. 我们这节主要讲的是限流,限流的措施有很多,我这里分为 ...

  2. 视频教程-极简Java五:IO流-Java

    极简Java五:IO流 华中科技大学毕业,十余年行业经验,曾带领团队完成CPN客户管理系统,并完成农业银行网站,乐途旅游网等网站的开发,在Java领域有深厚的积累,授课风格深入浅出,直指核心. 夏昊 ...

  3. java random构造方法_Java中的Random()函数及两种构造方法

    Java中存在着两种Random函数: java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是 ...

  4. Java中的string定义的两种方法和区别

    java中的String定义的两种方法和区别 第一种:new方式 String s1 = new String("hello world"); String s2 = new St ...

  5. 在java程序中定义的类有两种成员_java试题 急需答案 谢谢!!!

    三.填空(每小题2分,共10分)1.在Applet中,创建一个具有10行45列的多行文本区对象ta的语句为:2.创建一个标识有"关闭"字样的标签对象gb的语句为.3.方法是一种仅有 ...

  6. Java中线程的创建有两种方式

    Java中继承thread类与实现Runnable接口的区别 Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过 ...

  7. Redis如何实现分布式锁延时队列以及限流应用丨Redis源码原理|跳表|B+树|分布式锁|中间件|主从同步|存储原理

    Redis如何实现分布式锁延时队列以及限流应用 视频讲解如下,点击观看: Redis如何实现分布式锁延时队列以及限流应用丨Redis源码原理|跳表|B+树|分布式锁|中间件|主从同步|存储原理|数据模 ...

  8. java定义一个长方形类,该类中具有长方形长宽两种属性,并具有相应的构造方法属性访问方法,计算长方形的周长和面积的方法,要求输出长是5,宽是4的长方形

    定义一个长方形类,该类中具有长方形长宽两种属性,并具有相应的构造方法 属性访问方法,计算长方形的周长和面积的方法,要求输出长是5,宽是4的长方形 public class test3 {public ...

  9. Java通过图片url地址获取图片base64位字符串的两种方式

    工作中遇到通过图片的url获取图片base64位的需求.一开始是用网上的方法,通过工具类Toolkit,虽然实现的代码比较简短,不过偶尔会遇到图片转成base64位不正确的情况,至今不知道为啥. 之后 ...

最新文章

  1. 修改 Oracle 数据库 sequence(序列) 的 increment (步长)
  2. css属性cusor
  3. 仿iOS中图标的抖动
  4. golang中的sync.WaitGroup
  5. 【Android APT】注解处理器 ( Element 注解节点相关操作 )
  6. Android Intent解析
  7. 转: Jenkins+Gradle实现android开发持续集成、打包
  8. Python二级笔记(11)
  9. 【软考高项】信息系统项目管理师 论文写作技巧分享 (上)
  10. 大话重构连载9:大布局你伤不起
  11. Linux的三种权限含义,Linux chmod命令及权限含义
  12. 实现100以内的素数输出(Python与C++对比)
  13. 获取手机唯一标识插件_非常强大的几款手机浏览器,适用于某些黑科技功能
  14. ANSYS workbench 有限元分析 学习
  15. U盘安装苹果系统教程,菜鸟一步一步也能成大牛
  16. 骁龙AR2平台解析:分布式架构开启轻量化AR眼镜新时代
  17. 分享两个无限制的免费快递查询接口
  18. 2021-05-20英文科技论文写作与学术报告Lecture 3习题答案
  19. C语言 getchar()函数详解
  20. windows defender might impact performance

热门文章

  1. wordcount linux java_linux下在eclipse上运行hadoop自带例子wordcount
  2. python 注释一段话_Python快速入门(一)
  3. R语言中dim函数_R语言--向量化计算(apply族函数)
  4. ant实例 jmeter_Jmeter+ant搭建环境
  5. redhat系统双网卡绑定
  6. Angular 8之升级和新功能摘要
  7. 计数排序与桶排序python实现
  8. 云主机tracert外网无返回需在安全组入方向加ICMP Time Exceeded TTLexpired in transit
  9. SpringBoot安装和创建简单的Web应用
  10. ASP.NET Session丢失问题原因及解决方案[转]