2011-09-21 17 views
5

我從來沒有使用ConcurrentDictionary對象之前,並有一個關於它的幾個問題:如何訪問ConcurrentDictionary以及如何序列化它?

  1. 我是正確多個線程可以在同一時間字典閱讀,但如果它被寫入,無其他線程可以訪問它?

  2. 該對象是否可以序列化爲磁盤?

謝謝。

+0

不保證答案,但它是爲更多的讀者而不是作者設計的([來源](http://www.lovethedot.net/2009/04/bit-about-performance-of-concurrent.html) ,請參閱Josh Phillip的回答)。在使用時請記住這一點。 –

回答

13

我正確的說,多個線程可以同時從字典中讀取,但是如果它被寫入,其他線程無法訪問它嗎?

不,您可以安全地讀取和寫入多個線程。當然,在內部,我認爲有一些同步發生,但性能損失應該很小,你不應該擔心它並做任何額外的同步。

該對象是否可以序列化到磁盤?

取決於您使用的序列化程序。

3
  1. 我正確的說,多個線程可以同時從字典中讀取,但是如果正在寫入,其他線程無法訪問它嗎?

這是觀察不到的,你可以閱讀並從多個線程寫,讓有關同步類的擔心。

  1. 此對象是否可以序列化爲磁盤?

是的,它標有[Serializable]。你總是可以提取<K,V>對,並使用你喜歡的任何串行器。

相關問題