原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11868576.html

Java线程--Exchanger使用:

Exchanger 是用来交换2个线程之间的消息的, 超过2个线程则是随机发送消息, 不保证可靠性!

public static void main(String[] args) {
/**
* 两个线程间的数据交换
*/
Exchanger exchanger = new Exchanger(); ExecutorService service1 = Executors.newSingleThreadExecutor();
service1.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
System.out.println("子线程:"+Thread.currentThread().getName()+"收到的消息是: " + exchanger.exchange("你好这里是线程1"));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
service1.shutdown(); ExecutorService service2 = Executors.newSingleThreadExecutor();
service2.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
System.out.println("子线程:"+Thread.currentThread().getName()+"收到的消息是: " + exchanger.exchange("你好这里是线程2"));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
service2.shutdown();
}

打印:

子线程:pool-1-thread-1收到的消息是: 你好这里是线程2
子线程:pool-2-thread-1收到的消息是: 你好这里是线程1

Java线程--Exchanger使用的更多相关文章

  1. Java线程并发:知识点

    Java线程并发:知识点   发布:一个对象是使它能够被当前范围之外的代码所引用: 常见形式:将对象的的引用存储到公共静态域:非私有方法中返回引用:发布内部类实例,包含引用.   逃逸:在对象尚未准备 ...

  2. 【转载】 Java线程面试题 Top 50

    Java线程面试题 Top 50 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员 的欢迎.大多数待遇丰厚的J ...

  3. Java线程面试题 Top 50 (转载)

    转载自:http://www.cnblogs.com/dolphin0520/p/3958019.html 原文链接:http://www.importnew.com/12773.html   本文由 ...

  4. 50 道 Java 线程面试题(转载自牛客网)

    下面是 Java 线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理 ...

  5. Java线程面试题 Top 50

    转自:http://www.importnew.com/12773.html 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java ...

  6. 【多线程】Java线程面试题 Top 50(转载)

    Java线程面试题 Top 50 原文链接:http://www.importnew.com/12773.html   本文由 ImportNew - 李 广 翻译自 javarevisited.欢迎 ...

  7. Java线程面试题 Top 50(转载)

    原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited.欢迎加入Java小组.转载请参见文章末尾的 ...

  8. [ImportNew]Java线程面试题

    Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发.调试.优化经验,所以线程相关 ...

  9. Java线程面试题 Top 50【转载】

    不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程 ...

随机推荐

  1. 【MySQL作业】MySQL函数——美和易思日期和时间函数应用习题

    点击打开所使用到的数据库>>> 1.采用尽可能多的方式显示当前系统日期和时间. 下列 SQL 语句可以显示当前系统的日期和时间: curdate() 和 current_date() ...

  2. C# 执行Javascript脚本

    前一阵子使用C#编写SCXML状态机,需要解析EMCScript表达式,使用了Jint库(https://github.com/sebastienros/jint/),当时感觉与C#之间的数据转换不是 ...

  3. MySQL数据库常用命令汇总

    -- 查看mysql的当前登陆用户 select user(); -- 列出数据库 show databases; -- 使用数据库 use mysql; describe mysql.user; s ...

  4. Linux操作系统RedHat6.5安装

    1.说明 安装Linux操作系统Red Hat 6.5, 安装镜像为rhel-server-6.5-x86_64-dvd.iso. 2.开始安装 在BIOS里设置成从光驱启动, 服务器上电后会加载光驱 ...

  5. nginx rewrite 基础

    一.跳转到首页  如果请求的页面不存在的话就跳转到首页 location / {      if (!-e $request_filename){        rewrite ^/(.*) /ind ...

  6. 初识python: 字符编码转换

    指定当前文件编码格式:#-*- coding:utf-8 -*-unicode(万国码): 英文字母 1个字节,中文3个字节python中所有的字符都是unicode编码所有非unicode编码互转都 ...

  7. Redis_客户端命令和数据操作(3)

    更多命令请查找:http://c.biancheng.net/redis_command/ 切换数据库 redis数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库, ...

  8. C语言 运算符优先级和结合方向

    运算符优先级和结合方向 初级运算符( ).[ ].->..  高于  单目运算符  高于  算数运算符(先乘除后加减)  高于  关系运算符  高于  逻辑运算符(不包括!)  高于  条件运算 ...

  9. SQL高级优化(二)之MySQL架构

    一.架构 想要学好SQL优化就必须从对应数据库的基本架构开始学习 架构图如下 二.架构分析 1. 连接管理与安全验证 ​     MySQL有连接池(Connection Pool)管理客户端的连接. ...

  10. vscode 前端好用插件汇总

    本篇文章根据实际开发中使用的扩展插件,结合<精选!15 个必备的 VSCode 插件(前端类)>.<vscode 插件推荐 - 献给所有前端工程师(2017.8.18更新)>中 ...