Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/09/2010, 02:58
culevras
 
Fecha de Ingreso: febrero-2010
Mensajes: 15
Antigüedad: 14 años, 2 meses
Puntos: 0
Grupos de hilos

Hola, mi intencion es crear un grupo de hilos con ThreadGroup. Los hilos son instancias de una clase, en la cual se ejecuta un bucle, mi intencion es esperar desde la clase donde inicio el grupo de hilos a que los hilos lleguen a 50 iteraciones, y pararlos para intercambiar datos entre ellos. Una vez realizado el intercambio, dejarlos que continuen el bucle por donde se quedaron.

Para ello ejecuto lo siguiente:
Código:
public static void main(String[] args) {

		ThreadGroup islas= new ThreadGroup("grupo");
		
			
			Principal P1=new Principal(grupo,"1");
			Principal P2=new Principal(grupo,"2");
			
			P1.start();
			P2.start();
			
		
				System.out.println("Waiting for P1 and P2 to complete...");
		synchronized(grupo)
		{
				try {
					grupo.wait(); 
/*El problema esta en que esta instruccion   solo espera a la hebra que se esta ejecutando en ese momento, y no a todas las hebras de la isla.*/
			
				}
				catch (Exception e) {}

		}

		intercambiarDatos();
		
		synchronized(islas) {
		try {
			islas.notifyAll();
			System.out.println("Notificamos que ya hemos hecho los cambios ");
		}
		catch (Exception e) {}
		}		

class Principal extends Thread{


public void run()
{
if(iteracion==50)
		{
			synchronized(this)
			{
			
			try{
				
				this.notify();
				
				System.out.println(" Notifico que este hilo esta libre  ");
				this.wait();
				System.out.println(" Espero a que se hagan los cambios para poder continuar");
				
				
				}catch(Exception e)
				{}
			}
				
			}
El problema esta en que nose como hacer para parar la clase main hasta que todas las hebras del grupo lleguen a 50 iteraciones y que estas me avisen de que han llegado.

Gracias