电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java中ThreadLocalRandom的使用詳解

瀏覽:85日期:2022-09-03 16:20:00

在java中我們通常會(huì)需要使用到j(luò)ava.util.Random來(lái)便利的生產(chǎn)隨機(jī)數(shù)。但是Random是線程安全的,如果要在線程環(huán)境中的話就有可能產(chǎn)生性能瓶頸。

我們以Random中常用的nextInt方法為例來(lái)具體看一下:

public int nextInt() { return next(32); }

nextInt方法實(shí)際上調(diào)用了下面的方法:

protected int next(int bits) { long oldseed, nextseed; AtomicLong seed = this.seed; do { oldseed = seed.get(); nextseed = (oldseed * multiplier + addend) & mask; } while (!seed.compareAndSet(oldseed, nextseed)); return (int)(nextseed >>> (48 - bits)); }

從代碼中我們可以看到,方法內(nèi)部使用了AtomicLong,并調(diào)用了它的compareAndSet方法來(lái)保證線程安全性。所以這個(gè)是一個(gè)線程安全的方法。

其實(shí)在多個(gè)線程環(huán)境中,Random根本就需要共享實(shí)例,那么該怎么處理呢?

在JDK 7 中引入了一個(gè)ThreadLocalRandom的類。ThreadLocal大家都知道就是線程的本地變量,而ThreadLocalRandom就是線程本地的Random。

我們看下怎么調(diào)用:

ThreadLocalRandom.current().nextInt();

我們來(lái)為這兩個(gè)類分別寫(xiě)一個(gè)benchMark測(cè)試:

public class RandomUsage { public void testRandom() throws InterruptedException { ExecutorService executorService=Executors.newFixedThreadPool(2); Random random = new Random(); List<Callable<Integer>> callables = new ArrayList<>(); for (int i = 0; i < 1000; i++) { callables.add(() -> {return random.nextInt(); }); } executorService.invokeAll(callables); } public static void main(String[] args) throws RunnerException { Options opt = new OptionsBuilder().include(RandomUsage.class.getSimpleName())// 預(yù)熱5輪.warmupIterations(5)// 度量10輪.measurementIterations(10).forks(1).build(); new Runner(opt).run(); }}public class ThreadLocalRandomUsage { @Benchmark @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.MICROSECONDS) public void testThreadLocalRandom() throws InterruptedException { ExecutorService executorService=Executors.newFixedThreadPool(2); List<Callable<Integer>> callables = new ArrayList<>(); for (int i = 0; i < 1000; i++) { callables.add(() -> {return ThreadLocalRandom.current().nextInt(); }); } executorService.invokeAll(callables); } public static void main(String[] args) throws RunnerException { Options opt = new OptionsBuilder().include(ThreadLocalRandomUsage.class.getSimpleName())// 預(yù)熱5輪.warmupIterations(5)// 度量10輪.measurementIterations(10).forks(1).build(); new Runner(opt).run(); }}

分析運(yùn)行結(jié)果,我們可以看出ThreadLocalRandom在多線程環(huán)境中會(huì)比Random要快。

本文的例子可以參考https://github.com/ddean2009/learn-java-concurrency/tree/master/ThreadLocalRandom

到此這篇關(guān)于java中ThreadLocalRandom的使用詳解的文章就介紹到這了,更多相關(guān)java ThreadLocalRandom內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 电池挤压试验机-自行车喷淋-车辆碾压试验装置-深圳德迈盛测控设备有限公司 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 鲁尔圆锥接头多功能测试仪-留置针测试仪-上海威夏环保科技有限公司 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | RS系列电阻器,RK_RJ启动调整电阻器,RQ_RZ电阻器-上海永上电器有限公司 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 预制直埋蒸汽保温管-直埋管道-聚氨酯发泡保温管厂家 - 唐山市吉祥保温工贸有限公司 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 家庭教育吧-在线家庭教育平台,专注青少年家庭教育 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 烘干设备-热泵烘干机_广东雄贵能源设备有限公司 | 卫浴散热器,卫浴暖气片,卫生间背篓暖气片,华圣格浴室暖气片 | 过滤器_自清洗过滤器_气体过滤器_苏州华凯过滤技术有限公司 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 禹城彩钢厂_钢结构板房_彩钢复合板-禹城泰瑞彩钢复合板加工厂 | 杭州|上海贴标机-百科| 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 深圳希玛林顺潮眼科医院(官网)│深圳眼科医院│医保定点│香港希玛林顺潮眼科中心连锁品牌 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 华夏医界网_民营医疗产业信息平台_民营医院营销管理培训 | 环氧铁红防锈漆_环氧漆_无溶剂环氧涂料_环氧防腐漆-华川涂料 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 视频教程导航网_视频教程之家_视频教程大全_最新视频教程分享发布平台 | 合肥礼品公司-合肥礼品定制-商务礼品定制公司-安徽柏榽商贸有限公司 | 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 垃圾清运公司_环卫保洁公司_市政道路保洁公司-华富环境 | 中控室大屏幕-上海亿基自动化控制系统工程有限公司 | 沈阳激光机-沈阳喷码机-沈阳光纤激光打标机-沈阳co2激光打标机 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 成都茶楼装修公司 - 会所设计/KTV装修 - 成都朗煜装饰公司 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 层流手术室净化装修-检验科ICU改造施工-华锐净化工程-特殊科室建设厂家 | 喷涂流水线,涂装流水线,喷漆流水线-山东天意设备科技有限公司 | 不锈钢搅拌罐_高速搅拌罐厂家-无锡市凡格德化工装备科技有限公司 | 宝宝药浴-产后药浴-药浴加盟-艾裕-专注母婴调养泡浴 |