【并发编程041】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释放锁
相关文章
- 【Java并发编程实战14】构建自定义同步工具(Building-Custom-Synchronizers)
- 【并发基础】Java中的fail-fast(快速失败)机制
- 【并发基础】深入浅出Java锁优化(偏向锁,轻量级锁,锁消除,锁粗化,自旋锁)
- 【并发编程】Java中的锁有哪些?各自都有什么样的特性?
- Java并发编程:并发容器之CopyOnWriteArrayList(转载)
- Java 并发编程 Executor
- Java并发编程:从根源上解析volatile关键字的实现
- 【Java 线程 · 并发】ThreadLocal 分析
- java并发编程之Semaphore
- Java并发编程之同步
- Java并发编程面合集
- Java线程并发中常见的锁--自旋锁 偏向锁
- 【并发编程】Java中的锁有哪些?
- 【并发编程】JAVA 内存模型 与 volatile
- Java 并发编程面试题——Future
- Java并发之AQS源码分析(一)
- Java高并发专题之33、怎么演示公平锁和非公平锁
- Java高并发专题之5、深入理解进程和线程
- Java高并发专题之4、JMM相关的一些概念
- Java高并发专题之3、有关并行的两个重要定律
- java-并发-并发容器(1)
- java-并发-Callable、Future和FutureTask
- Java 并发工具包 java.util.concurrent 用户指南
- (转)Java并发编程:volatile关键字解析
- Java并发编程的艺术(六)——线程间的通信
- 深入理解Java并发之synchronized实现原理
- Java并发编程之并发代码设计
- java多线程并发库高级应用 之 线程范围内共享数据