Estoy trabajando en un sistema Java estándar con requisitos críticos de temporización para mis productores (1/100s de asuntos de ms).Qué cola de bloqueo de Java es más eficiente para escenarios de consumidor único de un solo productor
Tengo un productor colocando cosas en una cola de bloqueo, y un solo consumidor más tarde recogiendo esas cosas y volcándolas en un archivo. El consumidor bloquea cuando los datos no están disponibles.
Obviamente, la cola de bloqueo es la interfaz adecuada, pero ¿qué implementación real debo elegir si quiero minimizar el costo para el productor? Quiero jugar lo menos posible en cosas como bloquear y asignar cuando estoy poniendo cosas en la cola, y no me importa si el consumidor tiene que esperar mucho más tiempo o trabajar mucho más duro.
¿Existe una implementación que puede ser más rápida porque solo tengo un solo consumidor y un único productor?
¿Ha considerado la compra en tiempo real JVM? Tiene extensiones especiales que ayudan a lograr esos marcos de tiempo críticos. http://java.sun.com/javase/technologies/realtime/index.jsp –
@Rastislv: Estoy de acuerdo en que RT JVM sería mejor. Sin embargo, este es un sistema existente y la mayoría de los clientes usan JVM estándar; Necesito hacer benchmarking con un impacto mínimo, y estoy midiendo secciones que toman 1/100 ms – Uri
Considere usar [disruptor LMAX] (https://lmax-exchange.github.io/disruptor/) en lugar de una cola convencional. –