java - 单例对多线程的性能影响有多大?
巴扎黑
巴扎黑 2017-04-17 17:09:01
0
3
807

我抽象了一个连接管理类, ConnectionManager, 主题类TopicManager,可能还有更多.

  1. 就拿这个TopicManager来说, 我的程序主要就是用发布订阅的模式实现通讯, 也就是TopicManager的访问读取会非常频繁. 因为是单例的, 我肯定要做线程同步处理, 这样在多线程下对性能的影响有多大了?

  2. 相比之下, 我如果取消TopicManager这个类, 直接对数据库操作, 通过c3p0连接池, 以上两种方法相比, 哪种开销更大.

多谢各位.

巴扎黑
巴扎黑

全部回覆(3)
迷茫

單例和多執行緒是完全不相關的兩個領域,單例解決的是對物件的控制,多執行緒解決的是充分利用多核心處理器的能力。
並不是說單例就一定需要同步,只有在發生資料共享的時候才需要同步,所以就算你不使用單例,但是多個物件之間共享一個資源,一樣是需要同步的;同理,就算你使用單例,但是你不發生資源共享同樣是不需要同步的。

舉個實際的例子:
現在有一個單例,但是單例的方法並未使用任何static對象,也就是不存在資源共享,所以是不需要同步的。

伊谢尔伦

個人理解 單例如果考慮多線程肯定要加鎖,性能上一定會受影響,根據業務情況也考慮使用threadLocal

Ty80

單例是唯讀的。 。沒有任何影響。 。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板