Java中的原子性和原子操作

本文深入讲解了原子性在计算机科学中的定义,即操作要么全部执行,要么不执行,确保过程中不被打断。通过实例说明了如果32位变量赋值不具备原子性可能引发的数据一致性问题,并介绍了原子操作的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原子性:即一个操作或者多个操作 要么全部执行 并且执行的过程不会被任何因素打断,要么就都不执行。

 

举个例子:假如为一个32位的变量赋值过程不具备原子性的话,会发生什么后果?

int i=9;

 假若一个线程执行到这个语句时,我暂且假设为一个32位的变量赋值包括两个过程:为低16位赋值,为高16位赋值。

那么就可能发生一种情况:当将低16位数值写入之后,突然被中断。而此时又有一个线程去读取i的值,那么读取到的就是错误的数据。

 

原子操作:是指不会被线程调度机制打断的操作。这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch。

原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分,将整个操作视作一个整体是原子性的核心特征

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值