¿Cómo hacer un hilo CircularFifoQueue seguro?

Puede sincronizar usando commons-collections QueueUtils.synchronizedQueue

Queue queue = QueueUtils.synchronizedQueue(new CircularFifoQueue());

Pero según javadoc, necesita sincronización adicional para el acceso en serie:

Para garantizar el acceso en serie, es fundamental que todo el acceso a la cola de respaldo se realice a través de la cola devuelta.

Es imprescindible que el usuario se sincronice manualmente en la cola devuelta al iterar sobre ella:

Queue queue = QueueUtils.synchronizedQueue(new CircularFifoQueue());
...
synchronized(queue) {
    Iterator i = queue.iterator(); // Must be in synchronized block
    while (i.hasNext())
        foo(i.next());
    }
}

El incumplimiento de este consejo puede resultar en un comportamiento no determinista.

Respuesta 1

Estoy tratando de hacer que mi programa lea las respuestas ingresadas en forma de cuestionario. Para este propósito planeo usar getComponents () para obtener los campos de respuesta que necesito (por ejemplo, campos de texto, radio ...

He estado tratando de escribir un programa java que use el método Runtime.getRuntime (). Exec () para usar la línea de comandos para ejecutar una instancia del programa "tesseract". Algunos antecedentes, Tesseract es un ...

Tengo que asignar muchos archivos diferentes con diferentes estructuras a una base de datos. Hay muchas tablas diferentes en esos xlsx, así que pensé en el enfoque noSQL sin esquema, pero soy bastante novato en esto ...

Descripción del problema Estoy tratando de escribir una aplicación que capture el volumen hacia arriba / abajo y también los botones del auricular Bluetooth presionando cuando la aplicación está en segundo plano, primer plano, fondo y teléfono ...