java.util.Vector 序列化线程安全吗?
Posted
技术标签:
【中文标题】java.util.Vector 序列化线程安全吗?【英文标题】:Is java.util.Vector serialization thread-safe? 【发布时间】:2010-10-11 23:15:24 【问题描述】:我知道 Vector 类对于添加和删除元素是线程安全的 [reference]。
如果我使用 ObjectOutputStream 对 Vector 进行序列化,即使其他线程在序列化期间添加和删除对象,我是否能保证在反序列化时保持一致(且非损坏)状态?
【问题讨论】:
请注意,虽然单独的添加/删除操作是同步的,但是当其他线程正在添加/删除(不添加自己的锁定)时,您不能遍历向量(请参阅***.com/questions/1386275/… 【参考方案1】:writeObject() 方法是同步的。但是 Javadoc 中没有任何内容可以保证,除非“向量已同步”语句暗示了这一点。
请注意,readObject() 方法不需要同步,因为在 readObject() 返回之前,任何人都无法访问该对象。
【讨论】:
只要目前以线程安全的方式实现,我可以接受 Javadoc 中的声明有些模糊。以上是关于java.util.Vector 序列化线程安全吗?的主要内容,如果未能解决你的问题,请参考以下文章