我抽象了一個(gè)連接管理類, ConnectionManager, 主題類TopicManager,可能還有更多.就拿這個(gè)TopicManager來(lái)說(shuō), 我的程序主要就是用發(fā)布訂閱的模式實(shí)現(xiàn)通訊, 也就是TopicManager的訪問讀取會(huì)非常頻繁. 因?yàn)槭菃卫? 我肯定要做線程同步處理, 這樣在多線程下對(duì)性能的影響有多大了?相比之下, 我如果取消TopicManager這個(gè)類, 直接對(duì)數(shù)據(jù)庫(kù)操作, 通過(guò)c3p0連接池, 以上兩種方法相比, 哪種開銷更大.多謝各位.
3 回答

長(zhǎng)風(fēng)秋雁
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
單例和多線程是完全不相關(guān)的兩個(gè)領(lǐng)域,單例解決的是對(duì)對(duì)象的控制,多線程解決的是充分利用多核處理器的能力。
并不是說(shuō)單例就一定需要同步,只有在發(fā)生數(shù)據(jù)共享的時(shí)候才需要同步,所以就算你不使用單例,但是多個(gè)對(duì)象之間共享一個(gè)資源,一樣是需要同步的;同理,就算你使用單例,但是你不發(fā)生資源共享同樣是不需要同步的。
舉個(gè)實(shí)際的例子:
現(xiàn)在有一個(gè)單例,但是單例的方法并未使用任何static對(duì)象,也就是不存在資源共享,所以是不需要同步的。

MMMHUHU
TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
添加回答
舉報(bào)
0/150
提交
取消