Necesito despertar o enviar a dormir un single Thread a veces, y me pregunto cuál es la mejor y más eficiente manera de hacerlo.Notificar un hilo único: notificar, notificar todos o concurrent.locks.Condition?
La primera solución es señalización combinada con wait-notify
(sé cómo implementar este patrón correctamente, esa no es la pregunta).
lo leí en alguna parte que el uso de la bibliotecajava.concurrent y CountDownLatch
para la señalización es más eficiente. También verifiqué concurrent.locks.Condition, pero el tema this indica que se trata simplemente de una construcción (más segura para el programador) y más generalizada, sin un beneficio en el rendimiento en comparación con notify/notifyAll
. Peter Lawrey recomienda usar la biblioteca Concurrency en lugar de notify-notifyAll
en el comentario this, por lo que ahora estoy confundido sobre cuál es la mejor práctica para usar.
Una pregunta relacionada: ¿cuál es mejor en cuanto a rendimiento, notify
o notifyAll
en mi caso (es decir, si tengo un hilo)? Sé que hay muchos hilos similares sobre esto, pero ninguno de ellos da una respuesta clara. En mi caso, funcionalmente, no importa cuál uso, pero me pregunto cuál es más rápido, entonces.
Confiaba ciegamente en las sugerencias de Peter Lawrey, casi siempre. – Eugene
Solo lo haría si los argumentos lógicos (pro, contra) están equilibrados o si el problema es empírico y no se puede abordar analíticamente. –