dengxinyi 6 년 전
부모
커밋
e7583cea79
1개의 변경된 파일30개의 추가작업 그리고 0개의 파일을 삭제
  1. 30 0
      basis/concurrent/TestExchanger.java

+ 30 - 0
basis/concurrent/TestExchanger.java

@@ -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();
+        }
+    }
+}