2010-10-11 14 views
6

Sé que la clase Vector es segura para subprocesos para agregar y eliminar elementos [reference].¿La serialización java.util.Vector es segura para subprocesos?

Si serializo un Vector usando un ObjectOutputStream, ¿garantizo un estado consistente (y no corrupto) cuando lo deserializo incluso si otros hilos están agregando y quitando objetos durante la separación?

+1

tenga en cuenta que aunque las operaciones individuales de agregar/eliminar están sincronizadas, no puede iterar a través de un vector mientras que otros hilos están agregando/eliminando (sin agregar su propio bloqueo) vea http://stackoverflow.com/questions/1386275/why -java-vector-class-is-considered-obsolete-or-deprecated –

+0

Eso es bueno para tener en cuenta. –

Respuesta

7

El método writeObject() está sincronizado. Pero no hay nada en el Javadoc que lo garantice a menos que esté implícito en la frase 'Vector is synchronized'.

Tenga en cuenta que el método readObject() no necesita ser sincronizado, ya que el objeto no es accesible para nadie hasta que readObject() regrese.

+0

Siempre y cuando se implemente de manera segura para hilos, en este momento puedo aceptar para mis propósitos que la declaración en el Javadoc es algo vaga. –

Cuestiones relacionadas