Tengo un bean simple @Entity Message.java que tiene algunas propiedades normales. El ciclo de vida de ese objeto es el siguiente¿Necesito sincronización adicional cuando uso un BlockingQueue?
instanciación del mensaje que pasa en Tema A, que se pone en cola después en un blockingQueue
Otro hilo de una piscina obtiene ese objeto y hacer algunas cosas con él y cambia el estado del mensaje, después de eso, el objeto ingresa nuevamente en la cola bloqueante. Este paso se repite hasta que una condición lo detiene. Cada vez que el objeto obtiene lectura/escritura es potencialmente de un hilo diferente, pero con la garantía de que solo un hilo a la vez le leerá/escribirá.
Dado que las circunstancias, ¿necesito sincronizar los getters/setters? ¿Quizás las propiedades sean volátiles? o puedo simplemente irme sin sincronización?
Gracias y espero que pueda aclarar lo que estoy teniendo aquí.
+1 por mencionar la semántica de visibilidad de subprocesos de BlockingQueue. – Darron