开发者社区> 问答> 正文

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

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

展开
收起
蛮大人123 2016-03-11 10:08:31 3466 0
2 条回答
写回答
取消 提交回答
  • 单例和多线程是完全不相关的两个领域,单例解决的是对对象的控制,多线程解决的是充分利用多核处理器的能力。 并不是说单例就一定需要同步,只有在发生数据共享的时候才需要同步,所以就算你不使用单例,但是多个对象之间共享一个资源,一样是需要同步的;同理,就算你使用单例,但是你不发生资源共享同样是不需要同步的。 举个实际的例子: 现在有一个单例,但是单例的方法并未使用任何static对象,也就是不存在资源共享,所以是不需要同步的。
    2019-07-17 18:58:31
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

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

    2019-07-17 18:58:30
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
多线程 立即下载
低代码开发师(初级)实战教程 立即下载

相关实验场景

更多