2010-10-11 105 views
6

我知道Vector類對於添加和移除元素是線程安全的[reference]。java.util.Vector序列化是否線程安全?

如果我使用ObjectOutputStream對Vector進行序列化,當我反序列化它時,即使其他線程在分散化過程中添加和刪除對象,我也保證有一致(並且沒有損壞)的狀態?

+1

請注意,雖然單獨的添加/刪除操作是同步的,但您無法在其他線程添加/刪除(不添加自己的鎖定)的情況下遍歷矢量,請參閱http://stackoverflow.com/questions/1386275/why -java-vector-class-is-considered-obsolete-or-deprecated – 2010-10-12 00:00:16

+0

這很好記住。 – 2010-10-12 00:17:58

回答

7

writeObject()方法已同步。但是Javadoc中沒有任何東西可以保證,除非它的聲明'Vector is synchronized'暗示了它。

請注意,readObject()方法不需要同步,因爲只有在readObject()返回之前,對象才能被任何人訪問。

+0

只要目前以線程安全的方式實現,我可以接受我的目的,Javadoc中的聲明有些模糊。 – 2010-10-11 23:49:32