`
raymond.chen
  • 浏览: 1438177 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Exchanger的使用

 
阅读更多

Exchanger(交换者)是一个用于线程间协作的工具类,用于成对出现的线程间的数据交换。它提供一个同步点,在这个同步点两个线程可以交换彼此的数据。

 

两个线程通过 exchange() 方法交换数据, 如果第一个线程先执行 exchange() 方法,会一直等待第二个线程也执行 exchange(),当两个线程都到达同步点时,两个线程交换数据,将本线程生产出来的数据传递给对方。

 

Exchanger可以用于遗传算法,也可以用于校对工作。

 

范例:

/**
 * 两个线程进行数据交换
 */
public class ExchangerTest {
	private static Exchanger<String> exchanger = new Exchanger<>();
	private static ExecutorService threadPool = Executors.newFixedThreadPool(2);
	
	public static void main(String[] args) {
		threadPool.execute(new Runnable() {
			@Override
			public void run() {
				try {
					String A = "流水A";
					String result = exchanger.exchange(A);
					System.out.println("A --> " + result);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		});
		
		threadPool.execute(new Runnable() {
			@Override
			public void run() {
				try {
					String B = "流水B";
					String result = exchanger.exchange(B);
					System.out.println("B --> " + result);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		});
		
		threadPool.shutdown();
	}
}

 

分享到:
评论

相关推荐

    exchange使用commvault备份失败处理方法.docx

    ### Exchange使用CommVault备份失败处理方法 #### 一、问题背景与概述 在企业级环境中,Exchange Server作为邮件系统的核心组件之一,其数据的安全性和稳定性至关重要。为了确保数据的完整性和可恢复性,通常会...

    如何正确处理exchange数据库装载不成功的提示

    Exchange 2010 邮箱服务器...总的来说,处理 Exchange 数据库装载失败的问题需要对数据库状态有深入理解,熟悉如何使用 eseutil 工具进行修复和日志管理。同时,定期备份和维护良好的硬件环境可以减少这类问题的发生。

    Exchange Server 2007 数据保护与灾难恢复

    这是因为Exchange使用事务日志记录所有的邮件活动,这些日志在系统空闲时会被写入到数据库中。为了进行恢复,必须确保备份和事务日志的完整性。Exchange的可扩展存储引擎(ESE)备份API或VSS(Volume Shadow Copy ...

    Exchange2010用户配置手册

    这部分重点在于介绍如何使用Outlook Web APP,这是一个基于Web的界面,允许用户在任何位置通过浏览器访问其Exchange邮箱。关键点包括: - **登录流程**:通过特定的URL(例如`https://bjms1001.wistronits.com/owa`...

    Exchange Server 2003 实战管理系列0

    Exchange使用路由组和连接器来定义邮件路径,确保消息在组织内部和与其他邮件系统之间的顺畅流动。理解路由策略、传输规则和连接器配置对于维护邮件系统的正常运行至关重要。此外,还会涉及如何监控和调整路由设置,...

    Microsoft Exchange Server 2003 管理指南

    - **Exchange 与 Active Directory 的紧密集成**:Exchange 使用 Active Directory 存储其所有配置信息,并依赖 Active Directory 进行身份验证和授权。 #### 四、选择正确的管理工具 - **Exchange 系统管理器**...

    单机部署Exchange 2016

    * 管理员 administrator 安装 Exchange 2016:使用管理员账户安装 Exchange 2016。 * 进入 Exchange 2016 管理页面:完成安装后,进入 Exchange 2016管理页面,开始配置邮件服务器。 在本节中,我们详细介绍了单机...

    Exchange 2003迁移Exchange 2016实施步骤

    - 使用 Exchange 部署前检查工具对现有环境进行全面检查,确保符合 Exchange 2016 的最低要求。 **其他组件迁移(可选):** - 根据实际情况考虑是否需要迁移其他组件,例如证书服务器、DHCP 服务器等。 #### 升级...

    C#操作Exchange日历,查询会议室使用情况

    在本文中,我们将深入探讨如何使用C#编程语言与Microsoft Exchange服务器进行交互,特别是关注如何操作Exchange日历以及查询会议室的使用情况。我们将基于提供的标题、描述和标签,结合源码(假设为EWSTest)来阐述...

    使用Adsiedit从AD中清理Exchange

    "使用Adsiedit从AD中清理Exchange" 本文将详细介绍如何使用Adsiedit从Active Directory(AD)中清理Exchange,以便安装Exchange Server 2010。同时,本文还将介绍 Exchange Server 2010 的安装步骤和恢复丢失的 ...

    exchange 2000 server安裝實錄

    同时,建议安装 IIS 的全部组件,以便于后续基于 Web 的 Exchange 使用。 3. **登录账户权限**:确保用于安装的账户拥有修改根域配置容器的权限,并且该账户至少属于“EnterpriseAdmins”、“DomainAdmins”或...

    实验6-5 Exchange2007存储组不能载入.doc

    在使用Microsoft Exchange 2007的过程中,可能会遇到存储组无法正常载入的情况。这通常表现为当尝试启动或访问存储组时,系统会出现错误提示:“装入数据库“Mailbox Database”失败。错误:Exchange 无法装入指定的...

    Exchange 2010图解配置

    Exchange 2010中的单项恢复使用详解 26 Exchange Server 2010强大的网络邮局功能 28 Microsoft Exchange Server 2010 在手机终端上强大功能的体现 31 修改Exchange 2010的OWA界面 32 在Exchange 2010 GAL中显示用户...

    exchange/powershell,Java调用powershell开通邮箱

    标题 "exchange/powershell,Java调用powershell开通邮箱" 暗示了这是一个关于使用Java编程语言调用PowerShell脚本在Exchange服务器上创建邮箱的教程或项目。Exchange是微软提供的一款企业级电子邮件服务器软件,而...

Global site tag (gtag.js) - Google Analytics