java多线程学习笔记2---理解原子性和可见性

1.原子性

原子,从字面意思理解就是构成物质的基本单位,那么它就是不可分的,对于不能分割的操作就是原子操作,比如a=0,这个操作就是不能被分开的,把这种原子操作就称为原子性,原子操作在同一时刻是不能被多个线程同时访问的,所以不存在线程安全问题。然而还有很多操作都是可分的,就是非原子操作,就会存在线程安全问题,比如c=a+b;此操作就不属于原子操作,为了保证数据的安全性,就要进行线程同步。

2.可见性

可见性是相对于多个线程之间的,一个线程的操作,另外的线程是可见的,在java中使用volatile保证变量在多个线程之间是可见的,通过使用volatile关键字强制的从公共内存中读取变量的值,虽然变量具有可见性,但是对变量的操作不是原子操作,在并发的环境下还是会出现错误。所以volatile只保证可见性不保证原子性,而synchronized即保证原子性又保证可见性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值