原子访问(Atomic Access)
来源:互联网 发布:在code.org学编程 编辑:程序博客网 时间:2024/05/19 03:26
在编程中,原子操作是指在一次发生中生效。一个原子操作不能在中途停止:它要么完整发生,要么不发生。没有副作用的原子操作是可见的,直到完成。
我们见过自增表达式了,如c++,并不是原子操作,甚至非常简单的表达式会定义复杂的操作,这些可以被分解为其它的操作。有一些操作可以确认是原子操作,如:
对引用类型变量和大部分基本类型变量(除long和double)的读、写是原子的
所有声明为volatile变量的读和写都是原子的
原子操作不会被交错,所以不用担心使用他们时发生线程冲突。然而,这并不能消除所有原子操作同步的需求,因为内存一致性错误还是会发生,使用volatile变量可以降低内存一致性错误发生的风险,因为任何对volatile变量写操作都会和后续读操作建立现行发生行为关系。甚至,它还意味着当一个线程读一个volatile变量,它看到的不仅仅是最新的变化,而且看到引发变化代码的负作用。
使用简单原子变量访问比通过同步代码块访问这些变量更高效,但是需要程序员更加仔细以防止内存一致性错误发生,是否值得花费精力依赖于应用规模和复杂度。
在java.util.concurrent包中的一些类提供了原子方法,不在依赖同步方法,我们将会在高级并发章节讨论。
0 0
- 原子访问(Atomic Access)
- 原子访问(Atomic Access)
- The Java™ Tutorials — Concurrency :Atomic Access 原子访问
- 原子操作(Atomic)
- 原子操作(atomic operation)
- 原子操作(atomic operation)
- 原子操作(atomic operation)
- 原子操作(atomic operation)
- 原子性操作(atomic operation)
- 原子操作atomic
- java Atomic原子性
- 原子操作(atomic operation)
- Atomic Variables 原子变量
- Atomic Variables 原子变量
- atomic 原子操作练习
- java Atomic原子更新
- sync/atomic - 原子操作
- 原子操作(atomic operation)
- 让IIS支持dat、apk等类型文件下载
- git学习二——多分支的git管理
- sql server 纯sql语句分页 存储过程 返回结果集及页总数等
- HTML5-表格元素
- 自定义ProgressDialog
- 原子访问(Atomic Access)
- Flask总结(一)
- 产品助理实习day2
- Spring AOP 代理对象的生成 part3
- 解析 JSON 格式数据
- 一段项目开发时候用的调试代码 二 --代码分析器(基于表驱动直接访问)
- 搜索
- SCU2016-01 O题dijkstra变形或者最小生成树变形
- 打包python源文件为exe文件