|
@@ -0,0 +1,30 @@
|
|
|
|
+import java.util.concurrent.*;
|
|
|
|
+
|
|
|
|
+public class TestExchanger {
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+ Exchanger<String> exchanger = new Exchanger<>();
|
|
|
|
+ ExecutorService executor = Executors.newCachedThreadPool();
|
|
|
|
+ executor.execute(new ExchangeThread(exchanger, "dog"));
|
|
|
|
+ executor.execute(new ExchangeThread(exchanger, "cat"));
|
|
|
|
+ executor.shutdown();
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+class ExchangeThread extends Thread {
|
|
|
|
+ private Exchanger<String> exchanger;
|
|
|
|
+ private String obj;
|
|
|
|
+
|
|
|
|
+ ExchangeThread(Exchanger<String> exchanger, String obj) {
|
|
|
|
+ this.exchanger = exchanger;
|
|
|
|
+ this.obj = obj;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void run() {
|
|
|
|
+ try {
|
|
|
|
+ System.out.println("Give " + obj + " and get " + exchanger.exchange(obj));
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|