码迷,mamicode.com
首页 > 编程语言 > 详细

Java线程锁总结

时间:2020-05-02 18:56:03      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:代码   redis   就是   java   ofo   总结   优先   之间   you   

Java线程锁总结

1.synchronized:

在资源竞争不是很激烈的情况下,偶尔会有同步的情形下,synchronized是很合适的。原因在于,编译程序通常会尽可能的进行优化synchronize,另外可读性非常好。

2.ReentrantLock:

在资源竞争不激烈的情形下,性能稍微比synchronized差点点。但是当同步非常激烈的时候,synchronized的性能一下子能下降好几十倍,而ReentrantLock确还能维持常态。

高并发量情况下使用ReentrantLock。

3.Atomic:

和上面的类似,不激烈情况下,性能比synchronized略逊,而激烈的时候,也能维持常态。激烈的时候,Atomic的性能会优于ReentrantLock一倍左右。但是其有一个缺点,就是只能同步一个值,一段代码中只能出现一个Atomic的变量,多于一个同步无效。因为他不能在多个Atomic之间同步。

所以,我们写同步的时候,优先考虑synchronized,如果有特殊需要,再进一步优化。ReentrantLock和Atomic如果用的不好,不仅不能提高性能,还可能带来灾难。

以上就是Java线程锁的详解,除了从编程的角度应对高并发,更多还需要从架构设计的层面来应对高并发场景,例如:Redis缓存、CDN、异步消息等,详细的内容如下。

原文链接:http://youzhixueyuan.com/4-kinds-of-java-thread-locks.html

Java线程锁总结

标签:代码   redis   就是   java   ofo   总结   优先   之间   you   

原文地址:https://www.cnblogs.com/Cyfamoo/p/12818926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!