java – 为什么非同步对象比同步对象表现更好?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为什么非同步对象比同步对象表现更好?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含956字,纯文字阅读大概需要2分钟。
内容图文
![java – 为什么非同步对象比同步对象表现更好?](/upload/InfoBanner/zyjiaocheng/759/e2ab8bd56c47458e8ffd590af4731023.jpg)
阅读this one后出现问题.同步和非同步对象有什么区别?为什么非同步对象比同步对象表现更好?
解决方法:
What is the difference between Synchronized and Unsynchronized objects ? Why is Unsynchronized Objects perform better than Synchronized ones ?
HashTable被视为已同步,因为其方法被标记为已同步.每当线程进入同步方法或同步块时,它必须首先获得对与正在同步的对象实例相关联的监视器的独占控制.如果另一个线程已经在同一个对象的同步块中,那么这将导致线程阻塞,这是其他人提到的性能损失.
但是,同步块还会在之前和之后执行内存同步,这会影响内存高速缓存,并且还会限制代码重新排序/优化,这两者都会对性能产生重大影响.因此,即使您有一个线程调用进入同步块(即没有阻塞),它将比没有运行慢.
由于独立的CPU高速内存缓存,实现了线程程序的真正性能改进之一.当线程程序执行内存同步时,已更新的高速缓存内存块需要写入主内存,对主内存进行的任何更新都将使本地高速缓存内存无效.通过同步更多,甚至在单线程程序中,您将看到性能损失.
另外,HashTable是一个较旧的类.如果你想要一个可重入的Map,那么应该使用ConcurrentHashMap.
内容总结
以上是互联网集市为您收集整理的java – 为什么非同步对象比同步对象表现更好?全部内容,希望文章能够帮你解决java – 为什么非同步对象比同步对象表现更好?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。