Tengo varios hilos cada uno con su propia cola concurrente privada y todo lo que hacen es ejecutar un bucle infinito recuperando mensajes de él. Podría suceder que una de las colas no reciba mensajes durante un período de tiempo (tal vez un par de segundos), y también podrían venir en grandes ráfagas y es necesario un procesamiento rápido.concurrencia de Java: ¿debería bloquearse o ceder?
Me gustaría saber cuál sería el más apropiado para hacer en el primer caso: usar una cola de bloqueo y bloquear el hilo hasta que tenga más información o haga un Thread.yield()?
Quiero tener todos los recursos de CPU disponibles en un momento dado, ya que el número de subprocesos simultáneos puede aumentar con el tiempo, pero también no quiero que el proceso de mensajes se quede atrás, ya que no hay garantía de cuándo se volverá a programar el hilo para su ejecución cuando se realiza un rendimiento(). Sé que el hardware, el sistema operativo y otros factores juegan un papel importante aquí, pero dejando eso de lado y mirándolo desde un punto de vista Java (JVM?), ¿Cuál sería el más óptimo?
NO, solo intente la biblioteca [disruptor] (https://github.com/LMAX-Exchange/disruptor). ¡Parece el mejor rendimiento conseguido solo por el rendimiento! – qinxian