本文主要是介绍java 线程间交换数据的Exchanger,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
字符串
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class ExchangerTest {private static final Exchanger<String> exgr = new Exchanger<String>();private static ExecutorService threadPool = Executors.newFixedThreadPool(2);public static void main(String[] args) {threadPool.execute(new Runnable() {@Overridepublic void run() {try {String A = "银行流水A";// A录入银行流水数据String o=exgr.exchange(A);System.out.println(o);} catch (InterruptedException e) {}}});threadPool.execute(new Runnable() {@Overridepublic void run() {try {String B = "银行流水B";// B录入银行流水数据String A = exgr.exchange(B);System.out.println("A和B数据是否一致:" + A.equals(B) + ",A录入的是:"+ A + ",B录入是:" + B);} catch (InterruptedException e) {}}});threadPool.shutdown();}}
对象
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Exchanger; public class ExchangerDemo { public static void main(String[] args) { final Exchanger<List<Integer>> exchanger = new Exchanger<List<Integer>>(); new Thread(){ public void run(){ List<Integer> list = new ArrayList<Integer>(2); list.add(1); list.add(2); try { list = exchanger.exchange(list); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("thread1:" + list); } }.start(); new Thread(){ public void run(){ List<Integer> list = new ArrayList<Integer>(3); list.add(3); list.add(4); list.add(5); try { list = exchanger.exchange(list); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("thread2:" + list); } }.start(); }
}
这篇关于java 线程间交换数据的Exchanger的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!