【详解】Java高并发三种锁的比较

引入

在Java高并发场景下,主要使用是三种锁synchronizedStampedLockLock

比较

synchronized StampedLock Lock
是JVM的的内置锁,每个JDK版本都会优化 是一个Java类,可以更好的扩展 是一个Java类,可以更好的扩展
都是悲观锁 提供了写的乐观锁 都是悲观锁,但是提供了自旋锁,或者不阻塞的获取锁
性能一般,因为有一个从用户态到内核态的过程 性能最好,可以代替读写锁 性能十分不稳定,在复杂的读写环境下,性能十分差
不具有公平锁 不具有公平锁 具有公平锁
锁会自动释放 锁需要手动释放 锁需要手动释放

总结

  • StampedLock是性能最好的,可以胜任复杂的读写多线程环境
  • 令人惊奇的是synchronized由于是内置锁,每个JDK版本都会优化,尤其在复杂的读写多线程情况下,表现依然很优秀。
  • Lock虽然提供了读写锁,但是性能特别差;而ReentrantLock性能十分好,同时功能丰富

个人推荐:<mark>如果时读写环境,推荐使用StampedLock;如果是正常的加锁,推荐使用synchronized;如果需要对锁有更多的控制,推荐使用ReentrantLock</mark>

全部评论

相关推荐

昨天 13:12
已编辑
门头沟学院 Java
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司10个岗位
点赞 评论 收藏
分享
10-29 18:20
济南大学 Java
用微笑面对困难:他不是人事吗,怎么净特么不干人事
点赞 评论 收藏
分享
投递三奇智元机器人科技有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务