Como invoco el metodo de todos los hilos...

diego
29 de Julio del 2005
ejemplo:
public class Salon {
//public static entro s1;

public static void main(String[] args)
throws IOException {
System.out.println("Salon Iniciado");
int cont = 0, cont2=0;
try
{
while(true){
try{
Thread.sleep(5000);
new entro(cont);
cont = cont + 1;
cont2=cont;
if (cont2==4){
entro.lista();
cont2=0;
}
}
catch(InterruptedException ie) {
}
}
}
finally {
}
}
}


public class entro extends Thread {
String nombre = "Fulanito";
public entro ( int x)
{
nombre = nombre + x;
start();
}
public void run() {
System.out.println("Entro " + nombre);
while(true){
try{
Thread.sleep(20000);
}
catch(InterruptedException ie) {
}
}
}
public static void lista(){
System.out.println(nombre + " Presente");
}
}

En el ejemplo se trata de un Salon de clases, cada cierto tiempo entra un alumno Fulanito + x, y cada cierto tiempo la clase salon pasa lista, es decir invoca el metodo lista, pero solo se invoca el metodo del ultimo hilo creado. Necesito que cada uno de los hilos que se van creando desplieguen el mensaje del metodo lista.

Mario Arias SCJP
29 de Julio del 2005
Debes guardar el nuevo objeto que creaste en una colección(ArrayList o Vector) luego la recorres y llamas el metodo de cada objeto:

Vector v = new Vector();
/*
Pones aqui tu codigo
*/
v.add(new entro(cont));//cuando creas un nuevo objeto
//luego en el if en el que llamas el metodo lista()
for (Iterator iterator = v.iterator(); iterator.hasNext();)
{
entro o =(entro) iterator.next();
entro.lista();
}

Dudas, preguntas, comunicate conmigo