Las Bibliotecas de JavaLas Bibliotecas de Java\CountDownLatch (class) java.util.concurrentCountDownLatch (class) java.util.concurrent\Ejemplo 1. Señal de salida: arranque sincronizado

class Tarea1

import java.util.concurrent.CountDownLatch;

 

public class Tarea1 extends Thread {

      private CountDownLatch signal;

 

      public Tarea1(CountDownLatch signal) {

            this.signal = signal;

      }

 

      public void run() {

            try {

                  signal.await();

            } catch (InterruptedException ignore) {

            }

            System.out.println("empiezo ...");

            // hace su tarea

      }

}    

class SalidaSincronizada

import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.CountDownLatch;

 

public class SalidaSincronizada {

      public static void main(String[] args)

            throws InterruptedException {

            CountDownLatch signal = new CountDownLatch(0);

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

            tareas.add(new Tarea1(signal));

            tareas.add(new Tarea1(signal));

            tareas.add(new Tarea1(signal));

            // ... N veces

 

            for (Tarea1 tarea : tareas)

                  tarea.start();

 

            System.out.println("ya");

            // todos empiezan a la señal

            signal.countDown();

      }

}    

 

principio