餐饮行业做微信网站有什么好处,源码论坛源码,微信商城网站建设,海南省建设执业资格管理中心网站在Java语言中#xff0c;对基本数据类型的变量读取赋值操作都是原子性的#xff0c;对引用类型的变量读取和赋值的操作也是原子性的#xff0c;因此诸如此类的操作是不可被中断的#xff0c;要么执行#xff0c;要么不执行#xff0c;正所谓一荣俱荣一损俱损。
原子操作…在Java语言中对基本数据类型的变量读取赋值操作都是原子性的对引用类型的变量读取和赋值的操作也是原子性的因此诸如此类的操作是不可被中断的要么执行要么不执行正所谓一荣俱荣一损俱损。
原子操作
x10赋值操作是原子操作非原子操作
yx赋值操作 非原子性的因为它包含如下两个重要的步骤。
1执行线程从主内存中读取x的值
2在执行线程的工作内存中修改y的值为x,然后将y的值写入主内存之中。y自增操作 这条操作语句是非原子性的因为它包含三个重要的步骤
1执行线程从主内存中读取y的值。
2在执行线程工作内存中为y执行加1操作。
3将y的值写入主内存。zz1加一操作与自增操作等价综合上面的四个例子我们可以得出以下几个结论。 1、多个原子性的操作在一起就不再是原子性操作了。 2、简单的读取与赋值操作是原子性的将一个变量赋给另外一个变量的操作不是原子性的。 3、Java内存模型只保证了基本读取和赋值的原子性操作其他的均不保证如果想要使得某些代码片段具备原子性需要使用关键字 synchronized或者JUC中的 lock。如果想要使得int等类型自增操作具备原子性可以使用JUC包下的 原子封装类型java.util.concurrent.atomic.*
-----------------------------------------------------------------------------读书笔记摘自 书名Java高并发编程详解多线程与架构设计 作者汪文君