VademécumVademécum\Semáforo [semaphore] (concepto)Semáforo [semaphore] (concepto)\Ejemplo: semáforo con N permisos

class Tarea                                                          

import java.util.concurrent.Semaphore;

 

public class Tarea extends Thread {

      private Semaphore contador;

 

      public Tarea(Semaphore contador){

            this.contador = contador;

      }

 

      public void run() {

            // hace su tarea

            contador.release();

      }

}    

class EsperaNThreads

public class EsperaNTareas {

    public static void main(String[] args)

            throws InterruptedException {

        Semaphore contador = new Semaphore(0);

        List<Tarea> tareas = new ArrayList<Tarea>();

        tareas.add(new Tarea(contador));

        // ... N veces

 

        for (Tarea tarea : tareas)

            tarea.start();

 

        // espera a que todas acaben

        contador.acquire(tareas.size());

    }

}

 

principio