练习题之ExChange

两个线程可以交换对象的同步点。每个线程都在进入exChange方法时给出某个对象,并接受其他线程返回时给出的对象。用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。

构造方法摘要
Exchanger()           创建一个新的 Exchanger。
方法摘要
V exchange(V x)           等待另一个线程到达此交换点(除非它被中断),然后将给定的对象传送给该线程,并接收该线程的对象。
V exchange(V x, long timeout, TimeUnit unit)           等待另一个线程到达此交换点(除非它被中断,或者超出了指定的等待时间),然后将给定的对象传送给该线程,同时接收该线程的对象。
public class ExchangerTest {

    public static void main(String[] args) {
        ExecutorService service = Executors.newCachedThreadPool();
        final Exchanger exchanger = new Exchanger();
        service.execute(new Runnable(){
            public void run() {
                try {
                    Thread.sleep((long)(Math.random()*10000));
                    String data1 = "zxx";
                    System.out.println("线程" + Thread.currentThread().getName() +
                    "正在把数据" + data1 +"换出去");
                    String data2 = (String)exchanger.exchange(data1);
                    System.out.println("线程" + Thread.currentThread().getName() +
                    "换回的数据为" + data2);
                }catch(Exception e){

                }
            }
        });
        service.execute(new Runnable(){
            public void run() {
                try {
                    Thread.sleep((long)(Math.random()*10000));
                    String data1 = "lhm";
                    System.out.println("线程" + Thread.currentThread().getName() +
                    "正在把数据" + data1 +"换出去");
                    String data2 = (String)exchanger.exchange(data1);
                    System.out.println("线程" + Thread.currentThread().getName() +
                    "换回的数据为" + data2);
                }catch(Exception e){

                }
            }
        });
    }
}

运行结果如下:

线程pool-1-thread-1正在把数据zxx换出去
线程pool-1-thread-2正在把数据lhm换出去
线程pool-1-thread-1换回的数据为lhm
线程pool-1-thread-2换回的数据为zxx
时间: 2024-11-13 08:46:08

练习题之ExChange的相关文章

C#入门之流程控制练习题(排序)

流程控制练习题 排序算法练习 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleAppTest { class Program { //排序 static void SortNum(ref int[] arrInt) { //冒泡排序 //for (int i = arrInt.Le

Exchange 2013迁移SOP手册

Exchange 2013迁移SOP手册 阶段1:环境部署 OUTLOOK升级方式 统计版本低于SP3的OUTLOOK客户端信息 记录计算机在域中所在OU信息 域中创建临时升级用OU,如MAILUPGRADE 采用如下命令移动计算机到MAILUPGRADE OU dsmove "CN=Aidong Qi,OU=Users,OU=TESTP,OU=Hitech,DC=hitechad,DC=com" -newparent OU=MAILUPGRADE,DC=hitechad,DC=com

Install Exchange Server 2013 on Windows Server 2008

OS 要求 Exchange Server 2013可以部署在Windows Server 2012的平台也可以部署在Windows Server 2008 R2的平台.如果部署在Windows Server 2008 R2平台要求操作系统版本为Windows Server 2008 R2 SP1的版本? 安装服务器角色 : PowerShell中执行如下命令 , 打开Windows PowerShell 运行如下命令来加载服务器管理器模块 ? Import-Module ServerMana

易宝典文章——玩转Office 365中的Exchange Online服务 之二十四 配置垃圾邮件筛选器反垃圾邮件

如果希望实现基于发件人邮件地址,或者需要拒绝某个域的邮件,可以通过Exchange Online提供的垃圾邮件筛选器策略来解决.垃圾邮件筛选器策略除了能够实现上述的黑名单筛选外,还支持白名单筛选,基于国别来进行筛选,比如阻止某岛国语言的邮件,从某小人国发来的邮件等.此外,垃圾邮件筛选器策略还定义做针对不同级别的垃圾邮件如何进行处理,是标注,还是放入垃圾箱,或者是进行隔离等.一.了解默认的垃圾邮件筛选器策略在EAC中,导航到"保护",定位到"垃圾邮件筛选器"选项卡,选

易宝典文章——玩转Office 365中的Exchange Online服务 之二十五 配置出站垃圾邮件策略通知

企业的邮件服务器应该遵从良好的发件规范,尽量减小发送垃圾邮件和批量邮件到外部邮件系统.这样可以保护企业的邮件服务器发送IP不被收集到垃圾邮件服务器列表中,从而保证从企业的邮件服务器或企业域名发送的邮件,收件方能够正常接收.基于此种情况,出站垃圾邮件筛选即尤为重要,因为它起到了保护企业邮件系统发送邮件的可靠性,同时也保护了企业在商业交往中的信誉和利益.Exchange Online的出站垃圾邮件筛选与入站筛选类似,均有连接筛选和内容筛选构成,但是出站筛选是无法进行配置的.不过可以配置出站垃圾邮件策

易宝典文章——玩转Office 365中的Exchange Online服务 之二十六 根据文本内容筛选群发邮件

根据实际情况,在企业中常常需要针对一些特定内容的邮件进行过滤,而这些邮件的匹配规则有和Exchange Online的默认内容筛选不符.比如:用户常常反映收到一些带有"订阅"或"退订"等词汇的批量垃圾邮件.在这种情况下,可能并不具备Exchange Online的垃圾邮件筛选条件,但确实骚扰了员工的正常工作.如何能够将这一类邮件过滤掉呢?通常可以使用Exchange Online的邮件流规则(传输规则)来现实.一.创建基于内容文本模式筛选的邮件流规则在"E

易宝典文章——玩转Office 365中的Exchange Online服务 之二十七 怎样处理并释放误报隔离邮件

在Exchange Online中有众多的垃圾邮件过滤功能,其过滤的结果大致分为四类: >直接拒绝接收: >放入垃圾邮件文件夹: >主题中进行标记为垃圾邮件: >隔离对于直接拒绝接收这种情况大多会针对确切到发件人.发件域.发件服务器的IP地址来进行设置,所以很少会出现误拒的情况.而放入垃圾邮件文件夹和主题中进行标注,这些垃圾邮件实际已经到了用户的邮箱.即使出现误报,用户也可以看到邮件.只有最后一种隔离邮件,如果是将用户所需要的邮件进行了隔离,那么用户往往会申请要找回这封邮件.怎样才

易宝典文章——玩转Office 365中的Exchange Online服务 之二十八 怎样过滤病毒木马邮件

病毒.木马等恶意代码已经充斥着整个Internet.其传播途径也非常广泛,其中有一种途径就是通过电子邮件进行传播.可能的情况如下: >邮件自身是通过病毒发出的,并携带病毒自身或变种: >邮件是通过发件人发出的,但是由于发件人的设备感染了病毒,该病毒自动随邮件发出: >发件人发送邮件时,主动添加了附件,而附件文件中带有病毒等.对于收件人来讲,如果接收到这些携带恶意代码的邮件后,而本地又没有最新的.有效的防恶意代码工具,那么就会被随之被感染病毒或遭到木马入侵等.Exchange Online

易宝典文章——玩转Office 365中的Exchange Online服务 之二十九 将垃圾邮件信息提供给微软

在反垃圾邮件这一无止境的永久工程中,如果只靠某一个人.某个公司或某个团体.组织的力量来进行往往是薄弱的,它需要整个Internet上的每一个人来参与.就如何在国内的骚扰电话.垃圾短信一样,往往需要防骚扰软件提供商都希望用户上报或标注垃圾短信发送号码和广告.骚扰电话的拨打号码,已针对这些号码进行更好的过滤.O365也提供了垃圾邮件信息反馈渠道,该操作能够让用户将其认为是垃圾邮件的邮件提交给微软,微软收到反馈后会对邮件进行分析,如果确实是垃圾邮件,微软会针对该邮件的特征在O365的反垃圾邮件系统中添