java乐观锁
2021-04-01 12:32:27 0 举报
java乐观锁
作者其他创作
大纲/内容
先查询内存中的a,与工作内存中的a不相同,所以更新工作内存的a再做同样的尝试
a=1
当前主内存值V,旧的预期值A(即工作线程中的A),即将更新的值BV = A时就可以将B赋值给V,如果V != A 则while继续判断,直到V=A成立
a=2
主内存
2
线程1
工作内存
线程2
1
乐观锁:认为自己在使用的时候不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。
更改a=a++
CAS(Compare And Swap)比较交换是一种非阻塞算法实现,也是一种乐观锁技术,能够在不使用锁的情况下实现多线程安全,所以CAS也是一种无锁算法。
synchronized和ReentrantLock都是悲观锁:悲观锁会认为其他线程会更改当前占有的资源,所以把资源设置为独占。
0 条评论
下一页