zoukankan      html  css  js  c++  java
  • Java 多并发之原子访问(Atomic Access)

    在编程中,一个原子操作是只会出现一次的。一个原子操作在中间不会停止:要么全部发生要么一点也不发生。我们只有在原子操作完成之后才会看到原子操作的具体影响。

    甚至是非常简单的表达式能够构造分解为简单操作的复杂操作。但是,你可以指定一些原子操作:

    • 对于所有的引用变量和大部分的原始类型(除了long和double)变量来说读写是原子操作。
    • 对于定义为了volatile 的所有变量来说读写是原子的。

    原子操作不会交错执行所以没有必要担心线程冲突的问题。但是这样就说没有必要同步所有的原子操作,因为一致性错误仍然可能发生。使用volatile变量可以减少内存一致性错误,因为任何写入volatile 变量的值会被其他的读到的是相同值。这说明对volatile 变量的修改对其他线程都是可见的。而且这意味找当一个线程读取一个volatile变量的时候,这不仅仅说明可以读取针对volatile 变量的最新修改值还看到对代码的影响。

    使用简单的原子变量比访问同步操作中的原来更加有效,但是这个需要程序员小心的去避免内存一致性问题。这个额外工作是否值得可是需要取决于应用的复杂性和规模了。

  • 相关阅读:
    小知识积累C++使用tinyxml解析Xml内存泄漏问题
    C/C++心得从内存开始
    C/C++心得理解指针
    C/C++心得面向对象
    对于语言的理解
    Lua脚本认知小结
    从敏捷开发到小团队SVN
    如何制作网页小动画?——gif or png
    华为数据之道_简读
    Python_读取文件替换字符
  • 原文地址:https://www.cnblogs.com/zhangminghui/p/4720334.html
Copyright © 2011-2022 走看看