Novato con pool de threads

David
29 de Enero del 2005
Hola a todos.

Estoy intentando hacer un pool de threads usando wait y notify para parar y reanudar los threads cuando quiera. Este seria mi codigo:

public class Hilo extends Thread implements Runnable{
public boolean listo = false;
//private Grupo miGrupo;
private int miPosicion;

public Hilo(int i, Grupo g){
//miGrupo = g;
miPosicion = i;
}

public void run(){
int i = 0;

while (true){
while (!listo){
try{
synchronized (this){
wait();
}
} catch(InterruptedException e){
System.err.println("Interrupcion");
}
}

System.out.println("Hola " + i);
i++;
listo=false;
}
}
}


-------------------------------------------------------------------------------
public class Grupo {
private Hilo[] pool;

public Grupo(int num){
int i;

pool = new Hilo[num];

for (i=0; i<num; i++){
pool[i] = new Hilo(i, this);
pool[i].start();
}
}


public void reiniciar(){

pool[0].listo=true;
pool[1].listo=true;
synchronized (this){
notifyAll();
}
}
}

-------------------------------------------------------------------------------
public class Externo {

public static void main(String[] args) {
int i=0;
Grupo g = new Grupo(2);

g.reiniciar();

}
}

El resultado es:
Hola 0
Hola 0

Pero por mas veces que llame a reiniciar, los threads ya no se mueven más. Curiosamente, haciendo un debug no parecen llegar ni siquiera a "Hola 0".

A lo mejor es una tontería, pero no tengo demasiado experiencia en estos temas.

Gracias por cualquier ayuda.