博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
synchronized和CAS锁的区别【图文教程】
阅读量:2139 次
发布时间:2019-04-30

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

平凡也就两个字: 懒和惰;

成功也就两个字: 苦和勤;
优秀也就两个字: 你和我。
跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美!
关注微信公众号【 IT特靠谱 】,每一篇文章都是心得总结,跟我学习你就是大牛!

 

synchronized和CAS锁的区别【图文教程】

(1)一个是悲观锁,一个是乐观锁

Synchronized:是一种悲观锁

      会导致未获得锁的线程阻塞,等待持有锁的线程释放锁。

CAS(compare and swap):是一种乐观锁

      乐观锁就是假设多个线程执行某个任务,不会有冲突,保存/更新数据的时候,如果数据又冲突,那么就保存失败回滚。自旋锁就是循环执行失败的线程,知道成功为止的过程(这个过程就叫自旋),就叫自旋锁。CAS其实就是乐观锁的一种实现,广泛应用于Atomic原子操作类,Lock锁,ConcurrentHashMap等线程安全的容器中。

      Compare and swap翻译过来就是比较并替换,比较传入的旧值是否与存放地址上的值相同,如果相同,则将新的值替换存放地址上的值;如果传入的旧值是否与存放地址上的值不相同,那么继续循环这个比较并替换操作,直到成功!

      CAS底层的native操作数据的方法是原子操作,也就是单个数据级别的原子操作

(2)场景使用不同

      synchronized适用于并发比较高的情况,cas常用在并发比较低的情况下。

(3)原子性范围不同

      CAS机制所保证的只是一个变量的原子性操作,而不能保证整个代码块的原子性。比如需要保证3个变量进行原子性的更新,就不得不使用Synchronized了。

      如果以上教程对您有帮助,为了不迷路,请关注一下吧~

 

 

 

 

 

转载地址:http://lupgf.baihongyu.com/

你可能感兴趣的文章
TP 分页后,调用指定页。
查看>>
Oracle数据库中的(+)连接
查看>>
java-oracle中几十个实用的PL/SQL
查看>>
PLSQL常用方法汇总
查看>>
几个基本的 Sql Plus 命令 和 例子
查看>>
PLSQL单行函数和组函数详解
查看>>
Oracle PL/SQL语言初级教程之异常处理
查看>>
Oracle PL/SQL语言初级教程之游标
查看>>
Oracle PL/SQL语言初级教程之操作和控制语言
查看>>
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>
Oracle PL/SQL语言初级教程之完整性约束
查看>>
PL/SQL学习笔记
查看>>
如何分析SQL语句
查看>>
结构化查询语言(SQL)原理
查看>>
SQL教程之嵌套SELECT语句
查看>>
几个简单的SQL例子
查看>>
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>