Estoy usando LinkedBlockingQueue
entre dos hilos diferentes. Un hilo agrega datos a través del add
, mientras que el otro hilo recibe datos a través del take
.¿Los pasos de inserción y eliminación de LinkedBlockingQueue son seguros?
Mi pregunta es, ¿tengo que sincronizar el acceso a add
y take
. ¿Los pasos de inserción y eliminación de LinkedBlockingQueue
son seguros?
no es en realidad. No, no si solo está usando agregar y tomar, pero si usa una operación masiva, tendría que sincronizarla en lugar de simplemente "Sí". ¿O estoy leyendo el documento equivocado? – cproinger
@cproinger, no, nunca tiene que sincronizarlo, siempre y cuando esté dispuesto a tratar con 'addAll' lanzando una excepción después de agregar un subconjunto de los elementos (o similar). Depende de cómo definas thread-safe. Tiene razón en que los métodos a granel no tienen una garantía de atomicidad. –
¿Es 'remove' también seguro para subprocesos? – q126y