博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 多线程之Exchanger
阅读量:2169 次
发布时间:2019-05-01

本文共 1091 字,大约阅读时间需要 3 分钟。

Exchanger不会阻塞主线程的执行

Exchanger只支持两个线程之间的数据交换

两个线程之间无论谁先到达exchange都会阻塞,然后等待另一个线程也到达exchange方法。然后交换数据后继续执行。

下面来看一个简单的例子就会使用啦

package demo01;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Exchanger;public class ExchangerTest{	public static void main(String[] args)	{		final Exchanger
> exchanger = new Exchanger<>(); new Thread() { @Override public void run() { List
list = new ArrayList<>(); list.add("li"); list.add("zi"); try { list = exchanger.exchange(list); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("thread1" + list); }; }.start(); new Thread() { @Override public void run() { List
list = new ArrayList<>(); list.add("zhang"); list.add("xuan"); try { list = exchanger.exchange(list); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("thread2" + list); }; }.start(); } }
输出:thread1[zhang, xuan]

            thread2[li, zi]

java.util.concurrent 包是多线程开发者的福音啊.大笑

你可能感兴趣的文章
结构型模式之桥接模式(Bridge)
查看>>
行为型模式之状态模式(State)
查看>>
行为型模式之策略模式(Strategy)
查看>>
行为型模式之模板方法模式(TemplateMethod)
查看>>
行为型模式之访问者模式(Visitor)
查看>>
大小端详解
查看>>
source insight使用方法简介
查看>>
<stdarg.h>头文件的使用
查看>>
C++/C 宏定义(define)中# ## 的含义 宏拼接
查看>>
Git安装配置
查看>>
linux中fork()函数详解
查看>>
C语言字符、字符串操作偏僻函数总结
查看>>
Git的Patch功能
查看>>
分析C语言的声明
查看>>
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>