Las Bibliotecas de JavaLas Bibliotecas de Java\Exchanger (class) java.util.concurrentExchanger (class) java.util.concurrent\Ejemplo

class Amigo

import java.util.concurrent.Exchanger;

 

public class Amigo extends Thread {

      private final String name;

      private final Exchanger<String> cita;

 

      public Amigo(String name, Exchanger<String> cita) {

            this.name = name;

            this.cita = cita;

      }

 

      public void run() {

            try {

                  sleep((int) (10 * Math.random()));

                  System.out.println(name + " esperando ...");

                  String recibido =

                        cita.exchange("regalo de " + name);

                  System.out.println(name + ": " + recibido);

            } catch (InterruptedException ignore) {

            }

      }

}    

class Amigos                                

public class Amigos  {

    public static void main(String[] args) {

        Exchanger<String> exchanger = new Exchanger<String>();

        Amigo angel = new Amigo("Angel", exchanger);

        Amigo pedro = new Amigo("Pedro", exchanger);

 

        angel.start();

        pedro.start();

    }

}

> java Amigos

Angel esperando ...

Pedro esperando ...

Pedro: regalo de Angel

Angel: regalo de Pedro                              

 

principio