TestExchanger.java 852 B

123456789101112131415161718192021222324252627282930
  1. import java.util.concurrent.*;
  2. public class TestExchanger {
  3. public static void main(String[] args) {
  4. Exchanger<String> exchanger = new Exchanger<>();
  5. ExecutorService executor = Executors.newCachedThreadPool();
  6. executor.execute(new ExchangeThread(exchanger, "dog"));
  7. executor.execute(new ExchangeThread(exchanger, "cat"));
  8. executor.shutdown();
  9. }
  10. }
  11. class ExchangeThread extends Thread {
  12. private Exchanger<String> exchanger;
  13. private String obj;
  14. ExchangeThread(Exchanger<String> exchanger, String obj) {
  15. this.exchanger = exchanger;
  16. this.obj = obj;
  17. }
  18. @Override
  19. public void run() {
  20. try {
  21. System.out.println("Give " + obj + " and get " + exchanger.exchange(obj));
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. }