为了账号安全,请及时绑定邮箱和手机立即绑定

单例对多线程的性能影响有多大?

单例对多线程的性能影响有多大?

德玛西亚99 2019-03-13 13:14:44
我抽象了一个连接管理类, ConnectionManager, 主题类TopicManager,可能还有更多.就拿这个TopicManager来说, 我的程序主要就是用发布订阅的模式实现通讯, 也就是TopicManager的访问读取会非常频繁. 因为是单例的, 我肯定要做线程同步处理, 这样在多线程下对性能的影响有多大了?相比之下, 我如果取消TopicManager这个类, 直接对数据库操作, 通过c3p0连接池, 以上两种方法相比, 哪种开销更大.多谢各位.
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

单例和多线程是完全不相关的两个领域,单例解决的是对对象的控制,多线程解决的是充分利用多核处理器的能力。
并不是说单例就一定需要同步,只有在发生数据共享的时候才需要同步,所以就算你不使用单例,但是多个对象之间共享一个资源,一样是需要同步的;同理,就算你使用单例,但是你不发生资源共享同样是不需要同步的。

举个实际的例子:
现在有一个单例,但是单例的方法并未使用任何static对象,也就是不存在资源共享,所以是不需要同步的。


查看完整回答
反对 回复 2019-04-16
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

个人理解 单例如果考虑多线程肯定要加锁,性能上肯定会受影响,根据业务情况也考虑使用threadLocal


查看完整回答
反对 回复 2019-04-16
?
桃花长相依

TA贡献1860条经验 获得超8个赞

单例是只读的。。没有任何影响。。


查看完整回答
反对 回复 2019-04-16
  • 3 回答
  • 0 关注
  • 525 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号