对java原子性,原子操作的理解
2022/7/24 1:22:51
本文主要是介绍对java原子性,原子操作的理解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
原子性:即一个操作或者多个操作,要么全部执行,并且执行的过程不会被任何因素打断,要么就都不执行。(注意单核与多核,CPU时间片耗尽,打断与影响)
在单CPU的情况下,只要一组操作能在一个时间片内被完成,这组操作就是原子性的,如果完不成,可能在这个空档期会有别的线程操作这组操作中的变量,破坏原子性。
在多CPU的情况下,无论一组操作否能在一个时间片内被完成,都有可能会有别的线程操作这组操作中的变量,破坏原子性。
原子操作:满足原子性的操作,在Java中,对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执行。
example:
x = 10; //语句1 y = x; //语句2 x++; //语句3 x = x + 1; //语句4
只有语句1是原子性操作,也就是说,只有单步的读取、赋值(而且必须是将数字赋值给某个变量,变量之间的相互赋值不是原子操作)才是原子操作。
原子操作问题 : 线程中 , 对变量副本 count 进行自增操作 , 不是原子操作 , 首先 从工作内存中读取变量副本到执行引擎 ( 操作数栈 ) 中
, 然后 再 进行自增运算 , 最后 写回到线程工作内存中 , 这是3个操作 , 如果变量 在这3个操作的空档时间进行了修改 , 那么就会产生无法预知的效果 ;
这篇关于对java原子性,原子操作的理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-28一步到位:购买适合 SEO 的域名全攻略
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门