java锁体系总结

一张图概括java 的锁体系

在这里插入图片描述
cas算法
cas意思就是比较和替换,有三个变量,主内存中的值,线程工作内存中的值(预期值),要修改的值,比较和替换是一个原子操作,每次在替换前都会比较预期值是不是和主内存中的值一致,如果一致则更新,不一致的话就从主内存中重新同步变量的值到工作内存,自旋。
cas算法弊端:
1:就是ABA的问题
当多个线程把变量的值从A改到B又改回到A,这时候cas不能识别这种状态的变化,就像银行有人把钱转出来用了一段时间又转进去,解决办法就是版本号机制,每次在更新的时候看下版本号和预期的一样不,一样就更新。
2:当并发写线程比较多的时候就会出现自旋时间很长,这个可以通过设置自旋次数或者自旋时间,当超过则线程阻塞

再说下synchronized:
从jdk1.6开始synchronized不是一上来就给加个重量级锁,而是根据情况一步步升级,从偏向锁到轻量级锁然后到重量级锁一步步进行锁升级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值