不變性immutablity設計 回覆

sinaID73652發表於2015-06-02
樓主,事實上我看了帖子後還是比較混亂,不明白immutablity是怎麼解決併發問題的,請樓主指教。

我看了帖子後大概理解是,值物件類似於棧上的值資料,只有自己的執行緒可以訪問和修改,不同執行緒擁有的實際上是不同的例項,那麼自然不存在爭用問題,是“執行緒安全的”,不知道我的理解對不對啊。 可是,這樣也失去了併發控制的意義。

前面那位同學也說了,先讀後寫還是需要序列化(姑且不說是用鎖控制還是佇列控制),那用不用不可變物件有什麼意義,究竟給併發效率提高帶來了什麼好處?

另一點不明白的是,值物件的值,比如lastedUpdateTime是從資料庫取的話,那麼一個會話更新這個值後,比如s1_A,那麼l_A必然要影響到其他會話(s2)的這個值(否則lastedUpdateTime便一直是舊資料),那麼必然會和s2_A衝突。

相關文章