ホームページ >Java >&#&チュートリアル >Exchanger データ交換を使用した Java マルチスレッド プログラミングの例
2人の間でデータ交換を実現するために使用されます。各人は、特定のトランザクションを完了した後、相手とデータを交換したいと考えています。最初にデータを取り出した人は、2番目の人がデータを持って到着するのを待ってから交換します。お互いのデータ。
package com.ljq.test.thread; import java.util.concurrent.Exchanger; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; 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 = "张三"; 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 = "李四"; 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){ } } }); } }
戻り結果:
线程pool-1-thread-1正在把数据'张三'换出去 线程pool-1-thread-2正在把数据'李四'换出去 线程pool-1-thread-1换回的数据为'李四' 线程pool-1-thread-2换回的数据为'张三'
Exchanger データ交換の例を使用した Java マルチスレッド プログラミングに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。