Java/Threads/Exchanger

Материал из Java эксперт
Перейти к: навигация, поиск

An example of Exchanger.

   <source lang="java">

  

import java.util.concurrent.Exchanger; class ExgrDemo {

 public static void main(String args[]) {
   Exchanger<String> exgr = new Exchanger<String>();
   new UseString(exgr);
   new MakeString(exgr);
 }

} class MakeString implements Runnable {

 Exchanger<String> ex;
 String str;
 MakeString(Exchanger<String> c) {
   ex = c;
   str = new String();
   new Thread(this).start();
 }
 public void run() {
   char ch = "A";
   for (int i = 0; i < 3; i++) {
     for (int j = 0; j < 5; j++)
       str += (char) ch++;
     try {
       str = ex.exchange(str);
     } catch (InterruptedException exc) {
       System.out.println(exc);
     }
   }
 }

} class UseString implements Runnable {

 Exchanger<String> ex;
 String str;
 UseString(Exchanger<String> c) {
   ex = c;
   new Thread(this).start();
 }
 public void run() {
   for (int i = 0; i < 3; i++) {
     try {
       str = ex.exchange(new String());
       System.out.println("Got: " + str);
     } catch (InterruptedException exc) {
       System.out.println(exc);
     }
   }
 }

}

</source>