Ver Mensaje Individual
  #5 (permalink)  
Antiguo 29/09/2008, 09:24
Belzebu
 
Fecha de Ingreso: enero-2007
Mensajes: 78
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Limitar Threads

Ante todo, pido perdon por la santa tontería que pregunté el otro día..., la del main.

He implementado el codigo que el me paso HackmanC para controlar que solo tengamos 10 Threads activos en cada momento, puede ser una tontería pero supongo que a alguien en algun momento de su vida lo necesitará.

Saludos y gracias!

Princiapl.java
Código PHP:
public class Principal {

    private 
int cuenta 0;
    public 
synchronized void incCuenta() {
        
cuenta++;
         
// Cuando 1 thread inicializa incrementa la cuenta.
    
}
    public 
synchronized void decCuenta() {
        
cuenta--; 
        
// Cuando 1 thread finaliza decrementa la cuenta.
    
}
    
    public 
synchronized void limitarThread() {
           while (
cuenta == 10) {
                   try {
                
System.out.println("esperando wait");
                    
this.wait();
                }catch (
InterruptedException e) {}
            }

        
    }

    public 
synchronized void desbloquearThread() {
        
this.notifyAll();             
    }


    
    public 
Principal() {
        
int contador 0;
        while (
contador30){
            
System.out.println("p1");
            
this.limitarThread();
            
this.incCuenta();
            
Thread hijo = new MiThread(this);
            
hijo.start();
            
System.out.println(cuenta);
            
contador++;
        }
    }    
public static 
void main(String[] args){
    new 
Principal();}} 
MiThread.java
Código PHP:
public class MiThread extends Thread {
    private 
Principal p;
    public 
MiThread(Principal p) {
        
this.p;//this.p.incCuenta(); // En el constructor agrega 1 a la cuenta
    
}


    public 
void run() {
    
    
    try{
sleep(100 60);}
    catch(
InterruptedException ie){
    
ie.printStackTrace();
    }
    
this.p.decCuenta(); // Esta función reduce la cuenta
    
this.p.desbloquearThread();
        
    
      }


Última edición por Belzebu; 29/09/2008 a las 09:40