zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【并发编程041】java如何保证原子操作的?

JAVA并发编程 如何 操作 原子 保证
2023-09-27 14:29:27 时间

java如何保证原子操作的?

在Java中可以通过锁和循环CAS的方式来实现原子操作

CAS: JVM中的CAS操作正是利用了处理器提供的CMPXCHG指令实现的 。从Java 1.5开始, JDK的 并发包里提供了一些类来支持原子操作, 如AtomicBoolean (用原子 方式更新的boolean值) 、 AtomicInteger (用原子方式更新的int值) 和AtomicLong (用原子方式更 新的long值) , 其中就 是依靠CAS操作来完成的。

锁: 如synchronized以及Lock锁, 线程获取对象锁之后, 会完成系列操作后释放锁, 运行期间, 其他线程会处于阻塞状态, 因此是原子性的操作 。 (后续会对两者进行更加深入的剖析)

锁机制保证了只有获得锁的线程才能够操作锁定的内存区域 。JVM内部实现了很多种锁 机制, 有 偏向锁 、 轻量级锁和互斥锁 。 有意思的是除了偏向锁, JVM实现锁的方式都用了循环CAS, 即当 一个线程想进入同步块的时候使用循环CAS的方式来获取锁, 当它退出同步块的时 候使用循环CAS释放锁