zoukankan      html  css  js  c++  java
  • C#转Java之路之二:多线程原子变量

    多线程操作会带来不一致性,为了实现一直性。我们可以用关键字:synchronized同步对象或者volatile轻量级、内存可见性。

    两个关键字使用对比:

    1、synchronized比较重,属于悲观锁机制,造成冲突大,线程间的上下文切换多,资源浪费。

    比如我们就实现计数操作。

    2、volatile轻量级内存可见性,非阻塞式,性能更高。

    java已经实现了很多原子操作类:在java.util.concurrent包里

     AtomicBoolean:原子Boolean类型
     AtomicInteger:原子Integer类型
     AtomicLong:原子Long类型
     AtomicReference:原子引用类型

    及相应的数组类型:

    AtomicIntegerArray
    AtomicLongArray
    AtomicReferenceArray

    为了便于以原子方式更新对象中的字段,还有如下的类:
        AtomicIntegerFieldUpdater
        AtomicLongFieldUpdater
        AtomicReferenceFieldUpdater
    AtomicReference还有两个类似的类,在某些情况下更为易用:

        AtomicMarkableReference
        AtomicStampedReference

    实现原理就是用到volatile关键字声明变量。

  • 相关阅读:
    TUN/TAP区别
    从日志文件解决ArcGIS Server性能低下问题的步骤(1)
    java异常
    Maven
    前车之鉴-web篇
    图论复习总结
    奇(qi)谋(ji)巧(yin)计(qiao)
    莫比乌斯反演呓语
    学习后缀数组笔记
    浅读叶青学长竞赛学习知识目录
  • 原文地址:https://www.cnblogs.com/zhaoguo435/p/6607057.html
Copyright © 2011-2022 走看看