美文网首页
cas和lock的比较

cas和lock的比较

作者: 无聊之园 | 来源:发表于2019-06-19 10:01 被阅读0次

可能很多人会觉得,cas比lock高级。cas比lock性能更好。

但是其实,我个人觉得,这个看实际场景。

1、cas操作如果预料到会自旋很多次,然后会导致,做了事情之后(比如写了4、5行代码),再cas操作发现别人把这个数据改了,然后自旋,这就导致前面执行的4、5行代码都是无用功。
这样的化,性能就不是很好了。

2、比如AtomicInteger和lock Integer,再高并发下,AtomicInteger确实会性能好一点,但是也不会高特别多,那种几倍差距,除非,特别特别高的并发。
那是因为,AtomicInteger的自旋没有做其他的无用功,直接cas。

3、cas相对于lock的性能优化方面是,减少了thread切换的开销。

3、看Doug Lea大佬,直接使用Lock锁的场景比比皆是。

4、其实,更高的提高性能方式的方式,是想办法,把锁的粒度减少,比如像concurretHashmap一样。而不是盲目的用cas,我想这也是为什么Unsafe这个类设计的就是不让普通开发人员使用的一个原因。

总结:能不适用cas尽量不要用cas,lock不会比cas低很多性能,提高并发性能最大的地方应该是减少lock的粒度。

相关文章

网友评论

      本文标题:cas和lock的比较

      本文链接:https://www.haomeiwen.com/subject/vrchqctx.html