软件架构-分布式系列并发编程atomic&collections
发布日期:2021-05-07 11:21:38 浏览次数:21 分类:精选文章

本文共 600 字,大约阅读时间需要 2 分钟。

在java中提供了一种对于原子操作的类,Atomic的包名为java.util.concurrent.atomic。这个包里面提供了一组原子变量的操作类,这些类可以保证在多线程环境下,当某个线程在执行atomic的方法时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM从等待队列中选择一个线程执行。

Atomic

  • CAS

能够弄懂atomic包下这些原子操作类的实现原理,就要先明白什么是CAS操作。

1.CAS指的是现代CPU广泛支持的一种对内存中的共享数据进行操作的一种特殊指令。这个指令会对内存中的共享数据做原子的读写操作。在Java并发应用中通常指CompareAndSwap或CompareAndSet,即比较并交换,是实现并发算法时常用到的一种技术。java.util.concurrent包中借助CAS实现了区别于synchronized同步锁的一种乐观锁。乐观锁就是每次去取数据的时候都乐观的认为数据不会被修改,因此这个过程不会上锁,但是在更新的时候会判断一下在此期间的数据有没有更新

2.CAS思想

CAS有三个参数,当前内存值V、旧的预期值A、即将更新的值B,当且仅当预期值A和内存值V相同时,将内存值修改为B并返回true,否则什么都不做,并返回false

3.CAS优缺点

系统在硬件层面保证了CAS操作的原子性,不会锁住当前线程,它的效率是

上一篇:软件架构-zookeeper集群部署与快速入门
下一篇:软件架构-分布式系列并发编程Lock锁和Tools限制

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月24日 23时39分52秒