范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

JAVA并发之AtomicInteger原理分析

  本篇文章我们以AtomicInteger为例子,主要讲解下CAS(Compare And Swap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象。
  我们先从一个例子开始吧。假设现在我们要实现多线程应用中的int值自增(单个应用范围),应该怎么做呢?
  我们可能首先想到的是利用synchronized关键字,大概的代码如下:private static volatile int value;  public static void main(String[] args) {         Runnable run = new Runnable() {             @Override             public void run() {                 for (int i = 0; i < 1000; i++) {                     increaseBySync();                 }             }         };                  Thread t1 = new Thread(run);         Thread t2 = new Thread(run);         t1.start();         t2.start();                  while (Thread.activeCount() > 1) {             Thread.yield();         }         System.out.println(value); }  private static synchronized int increaseBySync() {         return value++; }
  上面的例子有两个线程同时对value变量做自增操作,通过对increaseBySync方法加synchronized锁实现了线程安全的int值自增。synchronized性能问题
  当多个线程访问某个syncronized方法或者代码块的时候,线程间的切换和其他线程等待的时间间隔(取决于OS实现,存在不确定性),由此带来的性能损耗是比较大的。从JDK5开始,我们可以借助于java.util.concurrent.atomic包所提供的一些工具类,来实现上述的功能,AtomicInteger就是其中的一个类,它使用了CPU级别的CAS功能,利用它我们可以写出更高效的代码。 private static AtomicInteger atomicInteger = new AtomicInteger(0); public static void main(String[] args) {         Runnable run = new Runnable() {             @Override             public void run() {                 for (int i = 0; i < 1000; i++) {                     atomicInteger.incrementAndGet();                 }             }         };                  Thread t1 = new Thread(run);         Thread t2 = new Thread(run);         t1.start();         t2.start();                  while (Thread.activeCount() > 1) {             Thread.yield();         }         System.out.println(atomicInteger.get()); }
  上面的代码同样能达到多线程自增的效果,但是更高效。AtomicInteger源码分析
  下面我们来看下AtomicInteger内部是如何实现的呢。private static final Unsafe unsafe = Unsafe.getUnsafe(); private static final long valueOffset;  static {   try {     valueOffset = unsafe.objectFieldOffset     (AtomicInteger.class.getDeclaredField("value"));   } catch (Exception ex) { throw new Error(ex); } }  private volatile int value;
  首先它有一个用volatile修饰的int变量value,volatile这里主要是保证对value值的更新对每个线程的可见性,关于volatile的介绍可以参考文章末的链接。
  这里比较关键的是Unsafe类型的对象。通过它的名字JDK开发者想告诉我们它是不安全的,但是它又提供了一些JVM无法提供的功能,例如CAS就是其中一个。CAS
  下面是AtomicInteger类中的一个方法,它通过Unsafe对象调用了CAS功能。CAS是目前几乎所有CPU都提供的一个功能,而且是原子操作,借助它可以实现很多高效的功能。public final boolean compareAndSet(int expect, int update) {         return unsafe.compareAndSwapInt(this, valueOffset, expect, update); }其他atomic工具类
  java.util.concurrent.atomic包下面Atomic开头的类都是基于CAS实现的,大家有兴趣可以看看源码,如果理解了上面所说的,其他的都很类似。 AtomicBooleanAtomicIntegerArrayAtomicLongAtomicReference…其他文章
  Java并发之volatile关键字Demo代码位置
  src/main/java/net/weichitech/juc/AtomicIntegerTest.java · 小西学编程/java-learning - Gitee.com

五一换机推荐,这三款手机好评率最高,性能强悍关键价格还很低五一换机推荐,这三款手机好评率最高,性能强悍关键价格还很低第一款iPhone11iPhone11是2019年的手机,但相较于现在的一些新机,依旧不落后。搭载的是A13仿生芯片,它采中文在线一季度实现营收2。31亿元现金流大幅改善于蒙蒙中国证券报中证网中证网讯(记者于蒙蒙)4月27日晚间,中文在线发布2022年第一季度报告。一季度实现营业收入2。31亿元,较去年同期增长5。69业绩亏损额较去年同期收窄39。教育部国家智慧教育公共服务平台满月浏览量大幅增加来源央视新闻客户端教育部今天(28日)召开新闻发布会,介绍自3月28日国家智慧教育公共服务平台上线以来,建设和应用进展有关情况。教育部表示,3月28日国家智慧教育平台正式上线运行,用户需求洞察的常用方法互联网时代,企业与用户之间的连接关系发生了巨大改变,尤其在移动互联网大行其道的当下,用户的大部分需求在线上即可得到响应和满足,这也让那些曾经比较依赖线下渠道触客的企业不得不进行数字iPhone14价格下调!iPhone13Pro和13ProMax订单增1000万台眼看5月就要来了,距离苹果秋季发布会又近了一步,而这次发布会推出的iPhone14系列包括6。1英寸iPhone146。7英寸iPhone14Max6。1英寸iPhone14Pro院士专家谈时空大数据地理信息产业融合发展必由之路作者中国工程院院士王家耀地理信息产业是以现代测绘和地理信息系统遥感卫星导航定位等技术为基础,以地理信息资源开发利用为核心,从事地理信息获取处理应用的高技术服务业。自20世纪60年代华为Mate50Pro再次曝光首发鸿蒙OS3。0,有望支持5G近几年来,国内手机厂商都开始冲击高端市场,手机的售价直接翻了好几倍,甚至一款旗舰机都要五六千元起步。在很多用户的心中,华为可以说是国产高端手机的代表,它在高端市场已经深深扎根。由于视频常见的720p1080p4k,这些分辨率到底包含了什么?想必大家在日常生活中都会看到或听到分辨率这个词,比如在视频网站会有几个分辨率选项供我们选择。我们都知道选不同的分辨率会带来不同的清晰度,但是他们为什么要叫这个名字,720p1080从5699降至3059元,12GB256GBIP68防水,小米老款旗舰依旧真香时间来得4月底后,目前市面上在售的旗舰机中,已经有很多骁龙8Gen1旗舰或者天玑9000旗舰机型可选,尤其是骁龙8手机,更是多了,而且有些厂商的骁龙8旗舰都开始出现降价。即便如此,iPhone怎么看屏幕是不是原装的?(三种方法)小白一学就会在ios15。2之后,苹果在系统中增加了部件和服务历史的功能。让用户可以查询用他们的iPhone的服务历史中,并且查看用于维修的部件是否是正品。具体位置设置通用关于本机部件和服务历升降摄像头,想的有多美,伤的就有多深升降摄像头到底好不好如果好用的话,你想,你用大脚丫子使劲想想,恐怕现在满大街的手机里至少七分之四点五的摄像头都会采用升降的模式了吧?手机里除了屏幕音量键关机键,使用频率最高的手机功
2021年投影仪排行榜出炉,当贝投影F3真实体验如何?其实投影仪在最近几年真的是特别火爆的一款数码产品,身边不少朋友都有入手。相比于传统的液晶电视,投影仪凭借更加轻便的体积,不俗的画质和丰富功能带给了用户更加舒畅的体验,今天咱们就来盘床垫版小爱同学还可以这么玩8HAI睡眠监测改善床垫智能实用智能时代,万物智能万物互联,万物互联凭借大数据红利成功带红了一波又一波智能产品而作为智能AI科技的代表之一,小爱同学凭借人性化的语音交互以及完善的产品链支持,一举拿下了全球第一的lOPPO发四项PPT技术,绿厂别再为他人做嫁衣了8月19日智能手机领域有两件大事发生一件是赵明在接受新华社采访时称荣耀将在1218个月的时间之内在国内做到市场第一另外一件是OPPO的未来影像技术沟通会。这两件事有一个共同点,都需全球首创匠心巨作广东未来科技AI立体拍摄手机B02震撼评测AI立体拍摄,这是一个全新的概念。因为在2D手机上,这简直就是痴人说梦。但是,伴随着新时代爆发的信息革命,广东未来科技作为3D立体技术行业的领军企业,率先实现了技术突破,推出了自主省钱节能的PHEV!插电式混合动力汽车(Pluginhybridelectricvehicle,简称PHEV),就是介于纯电动汽车与燃油汽车两者之间的一种新能源汽车,既有传统汽车的发动机变速器传动系统销量火爆逆操作,为什么降价的是Model3和汉EV?文傅雪峰特斯拉Model3标准续航版日前降价1。5万元,补贴后起售价23。59万元比亚迪汉EV接着加推了标准续航入门版,起售价拉低2万元,补贴后售价为20。98万元。汉EV和Mod智能穿戴设备智能钥匙扣便携录音笔一键录音真实还原人声从智能穿戴设备出现至今,衍生了许多不同种类的产品。比如智能眼镜,智能手表,智能手环,智能灯泡等,它们的出现给人们的生活带来了极大的便利。当然,还有一些黑科技产品,比如今天要介绍的L微信将要被取代?七大巨头将推出5G消息微信将要被取代?七大巨头将推出5G消息!据悉,近日由七大巨头组建的5G消息工作组,计划在今年之内,推出产品5G消息,其是基于GSMARCSUP建设而来,主要是实现信息之间的多媒体与6G网速大比拼美国100Mbps,日本10Gbps,我们呢?当下5G之争已经成为中国单独对抗整个西方国家的新战场,这场抢占市场的争斗目前虽然激烈,但是已经趋于稳定。在技术方面华为毫无疑问的是领先于其他国家,但是在全球市场份额上,由于老美的阻为什么8G内存的安卓手机用起来还是会卡顿?还不如苹果4G的流畅使用手机的时候,我们时常会听到有人说自己的手机会出现卡顿,速度慢的问题。而这些人当中,绝大多数都是使用安卓手机的朋友。有人发出疑问为什么安卓8G内存比不过苹果手机4G内存的手机?那华为官网上架的旧手机,价格堪比新机?OPPO发布四大黑科技华为官网商城上架了一批二手手机,这些手机都是经过华为认证的,搭载鸿蒙系统,电池也是全新的,不过价格与新机感觉差不多。华为Mate30Pro5G版售价5399元,这款发布了今年的二手