java exchange类,JAVA5---Exchange使用
该类用于处理,偶数个线程之间的数据交换。比如有两个线程A和B,当A开始运行并准备就绪数据后,它就会等待B开始运行,直到B准备好数据,两个线程马上开始交互数据。如果有三个线程将导致死锁。例子如下:
开启一个缓冲线程池,启动两个线程交换数据,每个线程准备时间采用sleep一段时间来模拟。代码如下:
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ExchangerTest {
/**
* @param args
*/
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 = "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){
e.printStackTrace();
}
}
});
service.execute(new Runnable(){
public void run() {
try{
String data2 = "data2";
System.out.println("线程" + Thread.currentThread().getName() +
"正在准备把数据" + data2 + "换出去");
Thread.sleep((long) (Math.random()*10000));
String data1 = (String) exchanger.exchange(data2);
System.out.println("线程" + Thread.currentThread().getName() +
"换回的数据为:" + data1);
}catch(Exception e){
e.printStackTrace();
}
}
});
service.shutdown();
}
}
java exchange类,JAVA5---Exchange使用相关推荐
- java camel exchange类_Exchange服务器之camel 基本概念
本文将带你了解Exchange服务器之camel 基本概念,希望本文对大家学Exchange有所帮助. camel 对exchange的几种处理consuming方式: 1. bean 2. bean ...
- 使用JAVA工具类进行邮件发送
使用JAVA工具类进行邮件发送 使用JAVA工具类进行邮件发送 文章目录 使用JAVA工具类进行邮件发送 前言 一.前期准备工作 二.使用步骤 1.引入依赖 2.进行发送邮件 前言 提示:我们在开发过 ...
- Exchange 2010和Exchange 2016共存部署-3:Exchange2016部署系统要求
本节来介绍在部署exchange 2016之前我们需要了解的一些比较关键的概念,以及exchange 2016在部署时的系统要求. (一)AD驱动程序 Active Directory 驱动程序是 M ...
- 菜鸟学exchange之一:exchange邮件系统的简单安装和部署
菜鸟学exchange之一:exchange邮件系统的简单安装和部署 2009-05-10 23:15:34 实验背景: 西安凌云高科技是一家拥有300名员工的高新技术企业,总部在位于西安.在上海和北 ...
- Java Scanner 类
Java Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 下面是创建 Scanner 对象的基本语法: Scann ...
- java字符存储_用java的类集框架做一个字符存储器(15)
11.这是java的关于java的类集框架做一个字符存储器的源代码可以直接进行编译运行,希望大家能够从中获益良多. package niming; //导入ArrayList这个类 import ja ...
- 干货:排名前 16 的 Java 工具类!
2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类! 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最 ...
- 排名前 16 的 Java 工具类
转载来自微信公众号:Java 技术栈.如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类.以下工具类.方法按使 ...
- Java枚举类使用方式
Java枚举类使用方式 单枚举定义 : /*** * @title: 单枚举定义* @author: wll* @since: 2021-1-27 14:47:54*/ public enum Jud ...
- java流类图结构_java I/O 流总结
一.java 流操作有关的类和接口: 类 说明 Fil ...
最新文章
- 怎么通过MQTT查看数据是否上云端_干货 | 设备快速上云,轻松搞定设备与云端通信...
- Python: 绝对导入 Absolute Imports
- Linux什么是文件IO,linux中文件IO
- 通过最简单的button控件,深入学习SAP UI5框架代码系列之零
- 0 uC/OS 系统精讲索引
- STL源码剖析 __type_traits
- 英特尔为 Kubernetes 推出分布式深度学习平台:Nauta
- 飞鸽传书程序IT基础架构和应用的管理
- CentOS下搭建Git服务器Gitosis
- python生成10个随机数字符串_python生成随机数、随机字符串
- viper4android最新,ViPER4Android FX音效驱动下载-ViPER4Android音效驱动 v2.4.0.1 正式版_手机乐园...
- 无法定位程序输入点_Z21qRegisterResourceDataiPKhs0于动态链接库***.exe上
- R语言笔记--par()函数详解
- javascript nonono
- 报错:No coverage information was collected, exit without writing coverage information
- ‘‘红包来了—红包来了—‘‘Python制作一个微信红包提示系统。
- 个人很喜欢的番茄助手格式
- IMU(Inertial measurement unit)
- zookeeper单机模式启动报错Error contacting service It is probably not running
- CentOS 7.6 下载和安装
热门文章
- mac安装chromedriver谷歌浏览器驱动
- python程序下载腾讯企业邮箱附件_python批量下载邮件附件
- word转pdf excel转pdf ppt转pdf pdf转word pdf转excel pdf转ppt pdf转jpg
- 回归分析beta值的标准_Beta值的基本原理及使用说明
- IBus拼音无法选择候选词故障
- c语言中if函数应用举例,if函数(if函数的应用举例)
- 2022年,4款值得用的报表工具软件推荐!
- 35岁了,依然倔强的相信未来!——我的2021年终总结
- 计算机参数配置解读,教你看懂电脑配置参数,了解组装电脑基本知识
- 使用Python进行数独求解(一)