Guava入门~RateLimiter

约束每秒几个线程操作

RateLimiter limiter = RateLimiter.create(4.0);

示例

阻塞方式

limiter.acquire();
executor.submit(runnable);

条件方式

if(limiter.tryAcquire()){doSomething();
}else{//Boo can't get indoSomethingElse();
}

完整示例

import com.google.common.util.concurrent.RateLimiter;
import org.junit.Test;
import java.util.Date;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;public class RateLimiterTest {@Testpublic void rateLimiterTest() throws Exception {final CountDownLatch waitSignal = new CountDownLatch(10);final ProtectedResource protectedResource = new ProtectedResource();Runnable expensiveThread = new Runnable() {@Overridepublic void run() {protectedResource.expensiveOperation();waitSignal.countDown();}};Executor executor = Executors.newFixedThreadPool(10);for (int i = 0; i <10; i++) {executor.execute(expensiveThread);}waitSignal.await();assertThat(waitSignal.getCount(),is(0L));}private class ProtectedResource {private RateLimiter rateLimiter = RateLimiter.create(2.0);public void expensiveOperation(){rateLimiter.acquire();System.out.println("Expensive operation run by "+Thread.currentThread()+" @ ["+new Date()+"]");}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【译】Lesson 1: 一个三角形和一个方块

【声明】&#xff1a;本系列文章译自&#xff1a;http://learningwebgl.com/blog/?page_id1217&#xff0c; 感谢Giles Thomas&#xff1b;限于我的英文水平&#xff0c;本文翻译并不一定严格遵从原文&#xff0c;但也不会严重背离原文&#xff08;如果有&#xff0c;请务必知…

小甲鱼 OllyDbg 教程系列 (三) :PJ 软件功能限制

小甲鱼OllyDbg教程&#xff1a;https://www.bilibili.com/video/av6889190?p8 https://www.freebuf.com/articles/system/87723.html 程序下载地址&#xff1a;https://pan.baidu.com/s/1OprawMSCXPZw1wuY5vxMmA 提取码: tp9e 无壳的实例 目标&#xff1a;去除软件功能限制…

特朗普即将主持AI会议 中美竞争成焦点

来源&#xff1a;华尔街见闻摘要&#xff1a;特朗普将用一整天在白宫主持他当选以来的第三次科技大会&#xff0c;这次的主题是人工智能&#xff08;AI&#xff09;。特朗普都将和硅谷巨头们探讨AI相关话题。其中&#xff0c;对AI技术的监管以及中美之间的AI竞争将会是会议的焦…

Guava入门~MapMaker

ConcurrentMap<String,Book> books new MapMaker().concurrencyLevel(2).softValues().makeMap(); concurrencyLevel()&#xff1a;设置允许并发修改map的线程数&#xff1b; softValues()&#xff1a;map的值用SoftReference封装&#xff0c;允许内存低时候垃圾回收&…

Fedora 10初体验

一、前奏 Fedora 10 - 熄灭吧 Fedora 是基于 Linux 的操作细碎&#xff0c;包罗了从容和开源软件最新的效果。Fedora 准许通通人从容操纵、修正和重新宣布。它由普及举世的贡献者协作开发&#xff0c;他们组成了 Fedora 项目社区。Fedora 项目对通通人都是开放的。 Fedora 项目…

DeepMind重大突破:AI进化出大脑级导航能力,像动物一样会“抄小路”

作者&#xff1a;刘伟摘要&#xff1a;DeepMind团队称&#xff0c;其最新研发出的一个人工智能程序具有类似哺乳动物一样的寻路能力。美国东部时间 5 月 9 日&#xff0c;一手打造 AlphaGo的DeepMind 团队又在世界顶级学术杂志《自然》上发表了一项重磅成果。在一篇题为 Vector…

Awesome Mac:收集的非常全面好用的Mac应用程序、软件以及工具

From&#xff1a;https://github.com/jaywcjlove/awesome-mac/blob/master/README-zh.md. 目录 开发者工具测试工具命令行工具版本控制数据库设计和产品虚拟机通信数据恢复音频和视频书签阅读写作软件打包工具制作电子书下载工具网盘输入法浏览器翻译工具安全工具优雅的上网( …

Guava入门~Guava caches

Cache 接口 put(key,value)&#xff1a;往缓存中添加值&#xff1b; V value cache.get(key, Callable<? Extends V> value)&#xff1a;从缓存中获取值&#xff1b; // 等价 value cache.get(key); if(value null){value someService.retrieveValue();cache.put…

小甲鱼 OllyDbg 教程系列 (十二) : inline patch ( 内嵌补丁 ) 之 调用堆栈查找法

小甲鱼 OD 教程&#xff1a;https://www.bilibili.com/video/av6889190?p20 堆栈调用方法 程序运行后&#xff0c;直接断点到 004DC0D1 这个 位置&#xff0c;按 F8一直没反应&#xff0c;打开程序&#xff0c;可以看到 neg 窗口&#xff0c; 点击 exit &#xff0c;关闭 neg …

Solaris 11 安装图解(8)

豆豆网 技能应用频道 图 13 完成安装界面 完成安装之后&#xff0c;安装日记会保留在文件中。可在以下地位检查安装日记&#xff1a;■ /a/var/sadm/system/logs/install_log■ /a/var/sadm/system/logs/upgrade_log■ /a/var/sadm/system/logs/sysidtool.log三、 系统登录…

CPU是如何制造出来的

来源&#xff1a;EDN电子技术设计摘要&#xff1a;Intelx86架构已经经历了二十多个年头&#xff0c;而x86架构的CPU对我们大多数人的工作、生活影响颇为深远。CPU是现代计算机的核心部件&#xff0c;又称为“微处理器”。对于PC而言&#xff0c;CPU的规格与频率常常被用来作为衡…

怎样使用Eclipse来开发Android源码

怎样使用Eclipse来开发Android源码 用eclipse&#xff0b;ADT作为android开发工具&#xff0c;可以说是很方便的&#xff0c;在HelloActivity小程序里我们就感觉到eclipse功能的强大。那么&#xff0c;我们可以用 eclipse来开发android源码吗&#xff1f;如果我们直接把android…

解析:GE工业互联网平台Predix

来源&#xff1a;赛迪智库摘要&#xff1a;当前&#xff0c;工业互联网平台作为我国构建工业互联网生态的核心载体&#xff0c;成为推动制造业与互联网融合的重要抓手。早在2012年GE提出工业互联网的概念&#xff0c;随后推出Predix&#xff0c;要将GE在工业领域的技术设备硬件…

小甲鱼 OllyDbg 教程系列 (十三) : 把代码和变量注入程序 以及 硬件断点

小甲鱼 OllyDbg 视频教程&#xff1a;https://www.bilibili.com/video/av6889190?p21 程序下载地址&#xff1a;https://pan.baidu.com/s/1A4-BDgbdUgy-cmI4IMMzYw 提取码&#xff1a;jsdv 开始&#xff0c;按照惯例&#xff0c;首先用 PEiD 打开&#xff0c;看下是什么语…

Guava入门~CacheBuilderSpec

示例 package bbejeck.guava.chapter6.cache;import bbejeck.guava.common.model.TradeAccount; import bbejeck.guava.common.service.BookServiceImpl; import bbejeck.guava.common.service.TradeAccountService; import com.google.common.base.Ticker; import com.google…

初识C#

Timer转载于:https://www.cnblogs.com/changweihua/archive/2011/03/07/1974171.html

小甲鱼 OllyDbg 教程系列 (十四) : 模态对话框 和 非模态对话框 之 URlegal 和 movgear

小甲鱼 OD 使用教程&#xff1a;https://www.bilibili.com/video/av6889190?p22 exeScope 下载&#xff1a;https://pan.baidu.com/s/1dSWapltdQsX9ttl_lSoq_g 提取码&#xff1a;yz2p URlegal 下载&#xff1a;https://pan.baidu.com/s/1Ljbvsnk_1Ps0e-cp7a1F9A 提取码…

这两年的人工智能淘金热 真正赚钱的公司是这几家

编译&#xff1a;网易智能人工智能已经成为人们热捧的对象&#xff0c;正在我们中间掀起一股“淘金热”&#xff0c;但真正从中获得经济利益的人是谁呢&#xff1f;是那些争相成为淘金者的大多数创业公司吗&#xff1f;是那些广泛从事“掘金业务”的公司吗&#xff1f;还是那些…

Swiftfox:极速的冲浪体验

Toy Posted in Apps将 Firefox 针对特定的处置惩罚器进行优化之后&#xff0c;便成了 Swiftfox。行使 Swiftfox&#xff0c;无论是启动次第本人&#xff0c;还是阅读网站内容&#xff0c;都能让你觉取得一股强烈的极速之风。更爽的是&#xff0c;你之前所用的 Firefox 设置、主…

小甲鱼 OllyDbg 教程系列 (十五) : 逆向注册机简单算法

小甲鱼 OD 教程&#xff1a; https://www.bilibili.com/video/av6889190?p24 KeygenMe 下载地址&#xff1a;https://pan.baidu.com/s/1gXAscM3WCNpIqxIm5t1rrQ 提取码&#xff1a;z5in 前言 用 OD 打开程序 输入框 常用 API&#xff0c;当不知道是哪个时&#xff0c;可…