/** * * @描述: 用於實現兩我的之間的數據交換,每一個人完成必定的事務後想與對方交換數據,第一個先拿出數據的人一直等待 * 直到第二我的拿到數據 到來時,才能彼此交換數據. * @做者: Wnj . * @建立時間: 2017年5月16日 . * @版本: 1.0 . */ public class ExchangerTest { public static void main(String[] args) { ExecutorService service = Executors.newCachedThreadPool(); final Exchanger exchanger = new Exchanger(); service.execute(new Runnable() { public void run() { try { String data1 = "zxx"; System.out.println("線程:" + Thread.currentThread().getName() + "正準備把數據" + data1 + "換過去"); Thread.sleep((long)(Math.random() * 10000)); String data2 = (String)exchanger.exchange(data1); System.out.println("線程:" + Thread.currentThread().getName() + "換回數據" + data2); } catch (Exception e) { } } }); service.execute(new Runnable() { public void run() { try { String data1 = "lhm"; System.out.println("線程:" + Thread.currentThread().getName() + "正準備把數據" + data1 + "換過去"); Thread.sleep((long)(Math.random() * 10000)); String data2 = (String)exchanger.exchange(data1); System.out.println("線程:" + Thread.currentThread().getName() + "換回數據" + data2); } catch (Exception e) { } } }); } }