实现一个流控程序。控制客户端每秒调用某个远程服务不超过N次,客户端是会多线程并发调用,需要一个轻量简洁的实现,大家看看下面的一个实现,然后可以自己写一个实现。
package test.token; import java.util.Date; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; public class Test { final static int MAX_QPS = 10; final static Semaphore semaphore = new Semaphore(MAX_QPS); public static void main (String ... args) throws Exception { Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() { @Override public void run() { semaphore.release(MAX_QPS/2); } }, 1000, 500, TimeUnit.MILLISECONDS); //lots of concurrent calls:100 * 1000 ExecutorService pool = Executors.newFixedThreadPool(100); for (int i=100;i>0;i--) { final int x = i; pool.submit(new Runnable() { @Override public void run() { for (int j=1000;j>0;j--) { semaphore.acquireUninterruptibly(1); remoteCall(x, j); } } }); } pool.shutdown(); pool.awaitTermination(1, TimeUnit.HOURS); System.out.println("DONE"); } private static void remoteCall(int i, int j) { System.out.println(String.format("%s - %s: %d %d",new Date(), Thread.currentThread(), i, j)); } }
相关推荐
│ 高并发编程第二阶段44讲、被动引用和类加载过程的练习巩固训练题.mp4 │ 高并发编程第二阶段45讲、ClassLoader加载阶段发生的故事.mp4 │ 高并发编程第二阶段46讲、ClassLoader链接阶段(验证,准备,解析)...
│ 高并发编程第二阶段44讲、被动引用和类加载过程的练习巩固训练题.mp4 │ 高并发编程第二阶段45讲、ClassLoader加载阶段发生的故事.mp4 │ 高并发编程第二阶段46讲、ClassLoader链接阶段(验证,准备,解析)...
最近在学习java多线程知识,整理了3套视频(龙果学院叶子猿、汪文君),一本书籍和面试题。
这套面试题可牛逼了,还是比较全面的,在应对面试以及代码实战coding方面还是很有帮助的,资料里面有一些是八股文,该背的咱们还是得背,另外也附加了一些代码实战coding,大伙儿感兴趣的可以下载来看看,在并发编程...
并发编程实战》阅读笔记 有关 Java 并发编程~ 别急别急,在重写它啦~,会补充一些新的内容进去,预计 2020/02 完成。 Content Java 并发编程基础 保证线程安全的两个角度 构造安全的并发应用程序 Java 并发高级主题 ...
并发编程\并发编程面试题.pdf 并发编程\并发面试题.pdf 性能优化\深入了解性能优化.pdf 数据库\mysql数据库面试题及答案(29题).pdf 设计模式\java面试题_设计模式(26题).pdf 设计模式\设计模式面试专题.pdf 设计...
内容覆盖了数据库设计的基本原则、函数依赖、范式理论、ER图转换、事务处理、并发控制等多个核心领域,是数据库学习者和专业人士提升技能的宝贵资料。 适用人群包括高校计算机专业学生、数据库管理员、软件开发人员...
1000道 互联网Java工程师面试题 485页 .pdf Docker — 从入门到实践.pdf Java中高级核心知识全面解析.pdf Java并发编程.pdf JAVA核心知识点整理.pdf Java高级架构知识点整理.pdf Java高级架构面试知识点整理.pdf JVM...
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
最新版Java面试宝典,精心提炼核心重点内容简化应用面试实战10秒一道,Java初级,高级,框架,底层原理,数据库,操作系统,微服务,IO,并发,JVM,容器,SpringBoot,SpringCloud,linx,面向对象,常用类,多线程,...
此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习...
2018/10/03 周三 下午 19:23 587,264 张孝祥-Java多线程与并发库高级应用. doc 2018/09/16 周日 下午 12:24 19,348 数据库悲观锁和乐观锁的区别.docx 2018/12/17 周一 上午 11:20 15,545 杨磊磊面试题.docx 2018/09/...
公开课第二节:大厂常见算法题深度解析.mp4 公开课第三节:浅谈测试的职业发展与破局.mp4 公开课第四节:软件测试人员面试的技巧和互联网大厂真题分享.mp4 公开课第五节:测试管理的那些事儿.mp4 公开课第六节:自动...
公开课第一节:功能测试框架+实战分析.avi 公开课第二节:大厂常见算法题深度解析.mp4 公开课第三节:浅谈测试的职业发展与破局.mp4 公开课第四节:软件测试人员面试的技巧和互联网大厂真题分享.mp4 公开课第五节:...
81 并发面试题.pdf 82 多线程,高并发.pdf 83 多线程面试59题(含答案)_.pdf 84 分布式缓存 Redis + Memcached 经典面试题!.pdf 85 搞定 HR 面试的 40 个必备问题!.pdf 86 集合框架.pdf 87 精选7道Elastic Search...
1、C++基础学习 ...2、10日c++实战狂练(习题和源码) 3、C++11新特性详解 4、c++编程风格 5、C++设计模式 6、effective_c++ 7、STL全面解析 8、开发工具及使用技巧 9、类相关学习 10、线程及并发 11、知识扩展
java后端面试题答案.pdf Java并发Fork-Join框架原理解析.docx JAVA核心知识整理.pdf JAVA核心知识点整理.pdf Java面试笔记.docx JAVA面试题解惑系列.pdf Java面试题(基础).pdf JVM 实用参数系列 - v1.0.pdf JVM与...
包含Java常见面试题,高并发、大数据、源码解读、缓存、Mq、数据库、微服务、设计模式、jvm、多线程等
优惠记录申请Java开发工程师的学习资料演示死锁螺纹池不安全集合类volatile特性线程安全单例模式CAS应用ABA问题信号倒数计时循环屏障阿里巴巴java开发手册阿里官方发布1000道互联网大厂Java工程师面试题源码学院发布...
操作系统面试送分题 什么是程序?什么是进程?它们的区别是什么? 并行是什么?并发是什么? 进程状态描述:就绪态,执行态与阻塞态 Linux进程创建之浅析fork() Linux环境编程 Linux 系统编程(一)Linux开发环境...