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

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

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

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

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

Java 多并发之原子访问(Atomic Access)的更多相关文章

  1. 学习Go语言之使用原子访问或互斥锁解决竞态问题

    使用原子访问或互斥锁 // 解决竞态问题 package main import ( "fmt" "sync" "sync/atomic" ...

  2. Java高并发之锁优化

    本文主要讲并行优化的几种方式, 其结构如下: 锁优化 减少锁的持有时间 例如避免给整个方法加锁 public synchronized void syncMethod(){ othercode1(); ...

  3. VB如何连接访问数据库Access

    VB如何连接访问数据库Access 听语音 | 浏览:10675 | 更新:2015-05-05 11:26 | 标签:连接 access 1 2 3 4 5 6 7 分步阅读 VB即Visual B ...

  4. tomcat访问(access)日志配置、记录Post请求参数

    tomcat访问(access)日志配置.记录Post请求参数 一.配置与说明 tomcat访问日志格式配置,在config/server.xml里Host标签下加上 <Valve classN ...

  5. java文件来演示如何访问MySQL数据库

    java文件来演示如何访问MySQL数据库. 注:在命令行或用一个SQL的前端软件创建Database. 先创建数据库: CREATE DATABASE SCUTCS; 接着,创建表: CREATE ...

  6. 通过Nginx,Tomcat访问日志(access log)记录请求耗时

    一.Nginx通过$upstream_response_time $request_time统计请求和后台服务响应时间 nginx.conf使用配置方式: log_format main '$remo ...

  7. Java语言中有4种访问修饰符

    转载:http://wuhaidong.iteye.com/blog/851754 Java语言中有4种访问修饰符 在Java语言中有4中访问修饰符:package(默认).private.publi ...

  8. 使用MIDAS访问远程Access数据库

    使用MIDAS访问远程Access数据库         Allen Tao(http://blog.csdn.net/allentao/) 2005-5-3 本文源码下载 访问远程数据库常用的办法是 ...

  9. Java设计模式(21)访问模式(Visitor者模式)

    Visitor定义:作用于某个对象群中各个对象的操作.它可以使你在不改变这些对象本身的情况下,定义作用于这些对象的新操作. 在Java中,Visitor模式实际上是分离了collection结构中的元 ...

随机推荐

  1. slf自己主动绑定实现类过程推断

    依照绑定实现类的方式是基于约定原则:推断分下面几个步骤 1.LoggerFactory扫描实现类路径有几个实现类,即在org/slf4j/impl/下有几个StaticLoggerBinder.cla ...

  2. SQL Server 2008 R2 性能计数器详细列表(一)

    原文:SQL Server 2008 R2 性能计数器详细列表(一) SQL Server Backup Device 计数器: 可监视用于备份和还原操作的 Microsoft SQL Server ...

  3. a web-based music player(GO + html5)

    github 住址:https://github.com/codercheng/music-player 后台是用GO (windows/ linux 都能够),前端是HTML5 推荐用chrome浏 ...

  4. (大数据工程师学习路径)第一步 Linux 基础入门----数据流重定向

    介绍 开始对重定向这个概念感到些许陌生,但通过前面的课程中多次见过>或>>操作了,并知道他们分别是将标准输出导向一个文件或追加到一个文件中.这其实就是重定向,将原本输出到标准输出的数 ...

  5. Linux命令行下载文件百度云盘

    本来想直接使用wget去下载.但百度似乎增加限制,下半停产,不就不再下.刚刚好找其他方法.另辟蹊径: http://oott123.github.io/bpcs_uploader/ 版权声明:本文博客 ...

  6. 产品 线上 保持 和 支持 服务 (Support and maintenance solutions)

    Maintenance and support are the key factors for the smooth functioning of ERP solutions. ERP mainten ...

  7. Topshelf创建Windows服务

    使用Topshelf创建Windows服务 概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps ...

  8. Intel 80x86 寻址模式

    随着进一步的研究,我们会逐渐接触到你的电脑配置模式的内在联系,和设计原则.在这些,解决计算机是一个非常重要的概念,我们需要很好地理解了什么. 一.预赛: (1)作数 在接触寻址方式之前,我们还要先了解 ...

  9. Nyoj Arbitrage(Floyd or spfa or Bellman-Ford)

    描述Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a curren ...

  10. I Love This Game 2115(结构体)

    Problem Description Do you like playing basketball ? If you are , you may know the NBA Skills Challe ...