游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

JAVA并发之AtomicInteger原理分析

  本篇文章我们以AtomicInteger为例子,主要讲解下CAS(CompareAndSwap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象。
  我们先从一个例子开始吧。假设现在我们要实现多线程应用中的int值自增(单个应用范围),应该怎么做呢?
  我们可能首先想到的是利用synchronized关键字,大概的代码如下:privatestaticvolatileintvalue;publicstaticvoidmain(String〔〕args){RunnablerunnewRunnable(){Overridepublicvoidrun(){for(inti0;i1000;i){increaseBySync();}}};Threadt1newThread(run);Threadt2newThread(run);t1。start();t2。start();while(Thread。activeCount()1){Thread。yield();}System。out。println(value);}privatestaticsynchronizedintincreaseBySync(){returnvalue;}
  上面的例子有两个线程同时对value变量做自增操作,通过对increaseBySync方法加synchronized锁实现了线程安全的int值自增。synchronized性能问题
  当多个线程访问某个syncronized方法或者代码块的时候,线程间的切换和其他线程等待的时间间隔(取决于OS实现,存在不确定性),由此带来的性能损耗是比较大的。从JDK5开始,我们可以借助于java。util。concurrent。atomic包所提供的一些工具类,来实现上述的功能,AtomicInteger就是其中的一个类,它使用了CPU级别的CAS功能,利用它我们可以写出更高效的代码。privatestaticAtomicIntegeratomicIntegernewAtomicInteger(0);publicstaticvoidmain(String〔〕args){RunnablerunnewRunnable(){Overridepublicvoidrun(){for(inti0;i1000;i){atomicInteger。incrementAndGet();}}};Threadt1newThread(run);Threadt2newThread(run);t1。start();t2。start();while(Thread。activeCount()1){Thread。yield();}System。out。println(atomicInteger。get());}
  上面的代码同样能达到多线程自增的效果,但是更高效。AtomicInteger源码分析
  下面我们来看下AtomicInteger内部是如何实现的呢。privatestaticfinalUnsafeunsafeUnsafe。getUnsafe();privatestaticfinallongvalueOffset;static{try{valueOffsetunsafe。objectFieldOffset(AtomicInteger。class。getDeclaredField(value));}catch(Exceptionex){thrownewError(ex);}}privatevolatileintvalue;
  首先它有一个用volatile修饰的int变量value,volatile这里主要是保证对value值的更新对每个线程的可见性,关于volatile的介绍可以参考文章末的链接。
  这里比较关键的是Unsafe类型的对象。通过它的名字JDK开发者想告诉我们它是不安全的,但是它又提供了一些JVM无法提供的功能,例如CAS就是其中一个。CAS
  下面是AtomicInteger类中的一个方法,它通过Unsafe对象调用了CAS功能。CAS是目前几乎所有CPU都提供的一个功能,而且是原子操作,借助它可以实现很多高效的功能。publicfinalbooleancompareAndSet(intexpect,intupdate){returnunsafe。compareAndSwapInt(this,valueOffset,expect,update);}其他atomic工具类
  java。util。concurrent。atomic包下面Atomic开头的类都是基于CAS实现的,大家有兴趣可以看看源码,如果理解了上面所说的,其他的都很类似。AtomicBooleanAtomicIntegerArrayAtomicLongAtomicReference其他文章
  Java并发之volatile关键字Demo代码位置
  srcmainjavanetweichitechjucAtomicIntegerTest。java小西学编程javalearningGitee。com

cpu的使用寿命有多长?答:永远。简单说。能用到这款CPU淘汰为止,到寿命。目前世界上还有很多第一代民用级CPU还在工作。比如80286。已经使用差不多40年了,在使用40年问题不大。但是……家用电器选对了,就是满满的幸福感!推荐几款实用家电选择不得不说如今的我们是幸福的。过去,洗衣机、冰箱、彩电曾是一代中国人结婚安家必备的三大件。现如今是科技的年代人们的生活正在以科学技术为手段,逐渐驶向另一种便利。幸福感,大到……苹果M1芯片设计总监跳槽英特尔财经网科技1月7日讯,据新浪科技消息,据报道,苹果Mac系统架构总监杰夫威尔科克斯(JeffWilcox)跳槽到英特尔,在苹果时他主要协助开发苹果芯片。未来威尔科克斯将帮助英特……刘作虎用户终于真正开始接受考虑使用折叠屏北京商报讯(记者石飞月)1月10日,OPPO宣布旗下折叠屏手机OPPOFindN全网预约量破100万,OPPO首席产品官、一加创始人刘作虎表示,这个100万意味着整个折叠屏行业……你家的路由器还好吗?来看看路由器中的门道现在家家户户都安装了网线,既快速又省流量、话费,那么想要使用网线,就一定少不了路由器,但你知道其中的门道吗?最开始的路由器是两个接收线或者是三个,网络还是30M、50M,……三星超透镜技术公布,未来要超越90的手机如果要问,近几年的手机有哪些设计,是机哥最忍不了的?不是没有耳机孔、不是没有可拆卸电池、不是没有得插SD卡而是它:摄像头。要不就是厚度越来越凸、要不就是数量越……为什么建议买华为的手机?不建议买华为,没必要花这样个价格买一个4g手机,虽然有这个实力,但是我觉得应该没必要支持,现在都是5g时代了谁还买4g手机,而且充电器都没有,甚至连接线都不送,体验上也没其他国……新能源动力电池的极限在哪里锂电池:2030年前仍占据主导地位我们要一直用锂电池吗?会不会有其他电池取代锂电池?这是动力电池技术可持续发展问题。首先,锂电池还会用很久。当前锂电池比能量上限约为……你的iPhoneX遇到最多的问题是什么?我们都知道苹果iPhoneX和任何智能手机一样,在使用过程中总会出现一些各种各样问题。我在苹果支持论坛上找到了用户反馈最多的几个问题,小编总结了一份关于iPhoneX常见问题列……外卖怎么了?经过几年的烧钱大战、融资与并购之后,中国外卖产业度过了野蛮成长阶段,目前已经基本成熟,是否到了割韭菜的阶段。先从商家下手,平台提成不停的增加;再从配送员下手,配送费每年都……回不来的贾跃亭造车难的FF自微博开放显示部分用户IP归属地后,博友们对部分公众人物的定位十分关注,其中也包括下周回国的贾跃亭。5月7日,贾跃亭发布的微博显示,其IP归属地为北京,引得网友纷纷猜测他是否已……Java常见的排序算法,一次跟你说明白快速排序中心思想是由冒泡排序改进而来。在待排序的n个记录中任取一个记录(通常取第一个记录),把该记录放入适当位置后,数据序列被此记录划分成两部分。所有关键字比该记录关键字小的记录……
整县模式最优解华为零碳整体解决方案近日,国家能源局在全国开展整县(市、区)推进屋顶分布式光伏开发试点工作以来,截至目前已有多个省市跟进。迎万亿市场机遇,国家电投、国家电网等央企率先反应,陆续与地方政府签订协议,……单片机内部基本原理bin文件如何跑起来编译器做了什么?无论是单片机还是cpu内部主要有三种部件ALU控制器寄存器。这个要从编译器开始讲起,编译器会给你编写的软件增加一个头部,无论是MDK还是IAR等等,这个头部是做了什么工作……同播共享功能已随macOSMonterey更新来到Mac上苹果终于将同播共享功能(SharePlay)功能带到了Mac上,该功能本应在macOSMonterey正式发表时一同上线,但延期了许久。随着macOSMonterey12。1的……为什么现在那么多人买二手手机,看完这些二手旗舰机价格,我悟了现在智能手机更新换代极快,甚至一年更新两代机,而我们换手机时手中的旧机器该怎么处理呢,有些人选择保留,有些人选择卖掉流入二手市场,随之也出现越来越多的人购买二手手机,那二手手机……对于欧洲来说,是俄罗斯的能源和粮食重要,还是效忠于美国重要?欧洲效忠美国只是表面与无奈。凡是人类有谁愿意屈服于人的。只有强迫屈服于人。最大原因欧盟只是一帮乌合之众。墙头草多。至于粮油对于欧盟国家来说就是国家命脉。主要俄罗斯坚持。欧美很快……我的特斯拉modelY诞生记(一)说到我的modely诞生,那还得从10多年前说起。2010年听说北京要摇号,不以为然,觉得摇就摇唄。11年1月北京开始摇号我是6月份入池,结果入池就再也没有看到希望。刚开始还每……联想事件,柳传志和司马南你支持谁?当然支持司马南了,建议国家查查柳传志和那些高管,让他们把侵呑的国有资产吐出来。大力支持司马南。表面上司马南评论的是柳传志,实际上评论的是资本主义。伟大导师马克思早就……以前那么好用的廉价圆珠笔为什么突然消失了?因为减低产量了。之前,圆珠笔钢珠所用的特种钢材,全世界只有两个国家生产:瑞士和日本。圆珠笔尖的加工设备也只有两个国家生产:瑞士和德国。其他国家为什么不生产?因为不值……如果机器人女友普及了,对人类社会的发展是好事还是坏事?拿我自个说事如果拥有一位貌似张柏芝、王菲、范冰冰、杨幂或者刘亦菲、车晓、高圆圆、赵丽颖的其中任何一位机器人做女友,今生今世还覆何求?现代科技,人与机器人的苟合毕竟生……低位数字经济大数据区块链1。经营范围技术开发、技术咨询、技术服务、技术培训;承接计算机信息系统集成;建筑智能化工程专业承包、电子工程专业承包;销售计算机软、硬件及外围设备、通信设备、仪器仪表;接……一道风景线,小米手机9位代言小姐姐正式出道你注意到了吗,小米手机的市场营销风格有了很大变化,小米创办人、小米集团董事长兼CEO雷军亲自担任小米代言人,小米还推出了小米11雷军签名版。除了雷军本人担任代言人外,小米……刹车怎么踩都没用,女子驾驶特斯拉突发撞墙事故,维权却被告知路刹车怎么踩都没用,女子驾驶特斯拉突发撞墙事故,维权却被告知路面湿滑!自从女车主维权特斯拉事情发生以来全国各地网友对于特斯拉的看法非常的差,事后虽然说特斯拉方面确实进行了回……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网