博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java--原子性、Atomic类
阅读量:6455 次
发布时间:2019-06-23

本文共 535 字,大约阅读时间需要 1 分钟。

  hot3.png

1.原子性操作是不能被线程调度机制中断的操作。一旦开始,那么它就可以在发生“上下文切换”(切换到其他线程执行)之前执行完毕。即要不执行完,要不就不执行。使用原子性来代替同步很棘手且危险。

2.除去long和double之外的所有基本类型之上的简单操作,如读取和写入,原子性可以保证它们会被当做不可分(原子)的操作来操作内存。

3.但是JVM可以将64位(long和double变量)的读取和写入当做两个分离的32位操作来执行,这就产生了在一个读取和写入操作之间发生上下文切换,从而导致不同的任务可以看到不正确结果的可能性。(字撕裂)

4.使用volatile关键字修饰long和double变量时,就会获得原子性。

5.++/--这种操作在Java语言中并不是原子的。数值类的基本类型,进行数学运算后赋值也不是原子的。

6.Atomic系列的类(AtomicInteger、AtomicLong、AtomicReference等),主要是为了达成一个目标:使数值类的基本类型,进行数学运算后赋值,这两个连贯操作,具备原子性。但是一般情况下,应该使用锁以及同步控制,而不是依赖原子性。

转载于:https://my.oschina.net/amui/blog/511974

你可能感兴趣的文章
jquery中用append增加节点
查看>>
CheckBoxList控件选中的选项不能改变
查看>>
小儿外感输液后遗留咳嗽案
查看>>
Repeater控件添加onmouseover和onmouseout事件
查看>>
ASP.NET开发,从二层至三层,至面向对象 (3)
查看>>
JQuery中$.ajax()方法参数详解
查看>>
急性乳腺炎乳汁不止案
查看>>
图像处理之基础---卷积,滤波,平滑
查看>>
【Java】Java XML 技术专题
查看>>
Centos yum安装java jdk1.8
查看>>
Python 模块的一般处理
查看>>
一个简单的旋转控制器与固定屏幕位置
查看>>
c# 获取excel所有工作表
查看>>
50个查询系列-建表和插入数据
查看>>
5935 小球
查看>>
【IDEA&&Eclipse】1、为何 IntelliJ IDEA 比 Eclipse 更适合于专业java开发者
查看>>
hdu 1999 不可摸数 筛选素数 两次打表
查看>>
RabbitMQ系列教程之三:发布/订阅(Publish/Subscribe)
查看>>
css中span元素的width属性无效果原因及多种解决方案
查看>>
(原創) C語言初學者建議的書籍 (C/C++) (C)
查看>>