线程的工具类(Exchange)

public class Exchanger<V>extends Object
 

可以在对中对元素进行配对和交换的线程的同步点。每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象。Exchanger 可能被视为 SynchronousQueue 的双向形式。Exchanger 可能在应用程序(比如遗传算法和管道设计)中很有用。 

实例:

import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
* 线程间的交换数据
*
* @author wangyi
* @version 1.0 <br />
* <a href="www.baidu.com">百度一下</a>
*/
public class ExchagerTest {
public static void main(String[] args) {
ExecutorService service = Executors.newCachedThreadPool();
Exchanger<String> exchange = new Exchanger<String>();
service.execute(new MyThread<String>("爱情", exchange, "爱情"));
service.execute(new MyThread<String>("关晓彤", exchange, "关晓彤"));
service.shutdown();

}

static class MyThread<T> extends Thread {
private T data;
private Exchanger<T> exchange;

public MyThread(T data, Exchanger<T> exchange, String name) {
this.data = data;
this.exchange = exchange;
setName(name);
}

@Override
public void run() {
System.out.println(getName() + "正准备把" + data + "交换出去");
try {
Thread.sleep((int) (Math.random() * 10000));
T datas = exchange.exchange(data);
System.out.println(getName() + "换回的为:" + datas);
} catch (Exception e) {
e.printStackTrace();
}

}
}

}

转载于:https://www.cnblogs.com/wanglaicai/p/6384698.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js 判断浏览器是否64位

js判断是否64位 浏览器 navigator.userAgent.match(/x64/i); 转载于:https://www.cnblogs.com/fanlinglong/p/7298733.html

linux ss 软件,linux ss 网络状态工具

ss是Socket Statistics的缩写查看网络状态&#xff0c;经常用的命令&#xff1a; watch ss -lntss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其他工具展示等多tcp和state信…

Lambda项目:迈向多核及超越

周一下午在JavaOne 2011的希尔顿旧金山大宴会厅B上做了“ Project Lambda&#xff1a;迈向多核和超越”&#xff08;会议27400&#xff0c;不要与Brian Goetz的同名演讲相混淆&#xff09; 的演示 。大宴会厅关闭&#xff0c;这是一个非常大型的非主题演讲场地&#xff0c;并且…

Python 06-字典

字典是一种key-value的数据类型&#xff0c;就像日常用的字典&#xff0c;通过字母或者笔画来查找对应页的详细内容。 字典是无序的&#xff0c;没有顺序。因为有key。 info {stu1001:wang er,stu1002:zhang san,stu1003:li si } print(info)#打印字典所有kv print(info[stu10…

hashMap 源码解读理解实现原理和hash冲突

hashMap 怎么说呢。 我的理解是 外表是一个set 数组&#xff0c;无序不重复 。 每个set元素是一个bean &#xff0c;存着一对key value 看看代码吧 package test;import java.util.HashMap; import java.util.Map.Entry;public class HashMaptest {public static void main(Str…

浙江大学linux网络通信,浙江大学钟财军副教授——“Wireless Powered Communication Networks”...

2016年5月17日&#xff0c;浙江大学钟财军副教授应徐正元教授邀请在中科大西区科技实验楼东楼十层1011会议室做了一场题为“Wireless Powered Communication Networks”的学术报告。报告会由龚晨教授主持&#xff0c;共50余名师生参加。此次报告会得到了“中科院无线光电通信重…

自定义Spring Data JPA存储库

Spring Data是一个非常方便的库。 但是&#xff0c;由于该项目是一个相当新的项目&#xff0c;因此功能不佳。 默认情况下&#xff0c;Spring Data JPA将基于SimpleJpaRepository提供DAO的实现。 在最近的项目中&#xff0c;我开发了一个定制的存储库基类&#xff0c;以便可以在…

[基础]PeopleSoft中的作业和调度作业集合定义

PeopleSoft进程调度器可以使一个或多个进程作为一个组。这个组在PeopleSoft中被称为作业(Job)。 PeopleSoft进程被定义为单个任务&#xff0c;程序或例程&#xff0c;例如cobol程序或AE程序或客户端运行的SQR。 作业由一个或多个相同或不同类型的进程组成&#xff0c;他们作为一…

体验 WebFont,网页上的艺术字

在最新项目中&#xff0c;由于要频繁使用艺术字&#xff0c;而用户设备没有此字体&#xff0c;因此以往的经验都是使用图片...所以在同事的瞩目期许之下&#xff0c;我开始实验研究这个问题的解决方案1. 直接使用字体文件font-face {font-family: xxxx;src: url(../img/汉仪秀英…

linux文件分别打包命令,Linux文件打包命令

15.1 gzipgzip(1)是GNU的压缩程序。它只对单个文件进行压缩。基本用法如下&#xff1a;$ gzip filename程序执行以后&#xff0c;文件名会变成filename.gz&#xff0c;而且一般情况下大小会比原文件要小。注意&#xff0c;程序并不新建一个新的文件filename.gz,而是将filename变…

Play 2.0框架和XA交易

XA事务非常有用&#xff0c;而且开箱即用&#xff0c;今天的Play 2.0不支持它们。 在这里&#xff0c;我展示了如何添加该支持&#xff1a; 首先&#xff0c;介绍一些XA有用的示例&#xff1a; –如果您使用来自两个不同persistence.xml的实体&#xff0c;则JPA使用两个物理连…

java代码注释规范

java代码注释规范 一、规范存在的意义 应用编码规范对于软件本身和软件开发人员而言尤为重要&#xff0c;有以下几个原因&#xff1a;1、好的编码规范可以尽可能的减少一个软件的维护成本 , 并且几乎没有任何一个软件&#xff0c;在其整个生命周期中&#xff0c;均由最初的开…

win10 hyper-v 虚拟机ping不通宿主机问题

在Windows10 Hyper-V 中安装 Linux (Centos6.9)虚拟机无法 ping 通宿主机 这种情况下关闭 Windows 防火墙就能ping通了&#xff0c;当然关闭防火墙不安全。所以需要 做以下步骤: 控制面板-》系统和安全-》Windows防火墙-》高级设置-》入站规则 启用下图被红框选中的两个选…

linux方法参数,Linux的sysctl 命令 参数

Linux内核通过/proc虚拟文件系统向用户导出内核信息&#xff0c;用户也可以通过/proc文件系统或通过sysctl命令动态配置内核。比如&#xff0c;如果我们想启动NAT&#xff0c;除了加载模块、配置防火墙外&#xff0c;还需要启动内核转发功能。我们有三种方法&#xff1a;1. 直接…

Java枚举:您拥有优雅,优雅和力量,这就是我所爱!

当Java 8即将面世时&#xff0c;您确定您对Java 5中引入的枚举很了解吗&#xff1f; Java枚举仍然被低估了&#xff0c;很可惜&#xff0c;因为它们比您想象的要有用&#xff0c;它们不仅仅用于通常的枚举常量&#xff01; Java枚举是多态的 Java枚举是可以包含行为甚至数据的…

C#删除和清空文件夹的程序

/// <summary>/// 清空指定的文件夹&#xff0c;但不删除文件夹/// </summary>/// <param name"dir"></param>private void DeleteFolder(string dir){foreach (string d in Directory.GetFileSystemEntries(dir)){if (File.Exists(d)){try{…

2)网页请求顺序

&#xff08;1&#xff09;分析浏览器访问一个网页的完整流程逻辑过程&#xff1a;http&#xff1a;//www.abc.com/def/ 转载于:https://www.cnblogs.com/xiaoyoucai/p/7306246.html

JavaOne 2012:非阻塞数据结构如何工作?

当我查看今天的日程安排时&#xff0c;我感到有些惊讶&#xff0c;并指出我目前计划今天参加的所有会议都在希尔顿举行。 当我意识到JavaOne演示文稿中大约有一半是在希尔顿酒店中并且似乎按路线大致定位时&#xff0c;这变得有些不足为奇了。 Tobias Lindaaker &#xff08; 新…

c语言箭头指针的作用,C语言中,结构体成员变量的点和箭头

C语言中&#xff0c;调用成员变量用点还是用箭头&#xff0c;取决于当前的ID是指针还是结构体本身。如&#xff1a;typedef struct {float height;float weight;} Person;int main(int argc, char *argv[]) {Person jiushen;Person *lengleng (Person *)malloc(sizeof(Person)…

JavaOne 2012:调查JVM水晶球

我回到了希尔顿的A / B广场参加星期一的第四届会议&#xff0c;但首先去了希尔顿的顶层收拾午餐。 我每年都在JavaOne的第一天被提醒&#xff0c;涉及到每个人的第一天的午餐获取过程令人惊讶地令人沮丧。 我知道我在JavaOne的第一年的经历使我有些困惑&#xff0c;因为我不确定…