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 (contador< 30){
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 = 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();
}
}