2012-08-22 13 views
5

el Javadoc dice que el servicio devuelto por Executors.newCachedThreadPool reutiliza hilos. ¿Cómo es esto posible? Un hilo solo se puede iniciar una vez llamando al start. Entonces, ¿cómo lo implementan? Los hilos de este servicio se están ejecutando en un bucle infinito y sus Runnable-s se reemplazan bajo demanda?¿Cómo newCachedThreadPool reutiliza los hilos?

Respuesta

4

Un Ejecutable Ejecutable puede llamar a otro.

Cada hebra se ejecuta sólo una Ejecutable principal, pero que Ejecutable toma Runnables de un BlockingQueue compartida y llama a estos hasta que esté apagado.

simplificado que hace.

final BlockingQueue<Runnable> queue = ... 

Runnable runs = new Runnable() { public void run() { 
    while(running) 
     queue.take().run(); 
}}; 

Puede leer el código para ver cómo realmente lo hace.

+1

que podría haber adivinado ... la firma también sugiere esta funcionalidad. – zeller

Cuestiones relacionadas