美文网首页JUC
JUC--并发工具类:Exchanger

JUC--并发工具类:Exchanger

作者: vsu | 来源:发表于2018-10-02 12:16 被阅读0次

2018-10-02

原文推荐 死磕Java并发

在API是这么介绍的:可以在对中对元素进行配对和交换的线程的同步点。每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象。Exchanger 可能被视为 SynchronousQueue 的双向形式。Exchanger 可能在应用程序(比如遗传算法和管道设计)中很有用。
Exchanger,它允许在并发任务之间交换数据。具体来说,Exchanger类允许在两个线程之间定义同步点。当两个线程都到达同步点时,他们交换数据结构,因此第一个线程的数据结构进入到第二个线程中,第二个线程的数据结构进入到第一个线程中。

其实就是"我"和"你"(可能有多个"我",多个"你")在一个叫Slot的地方做交易(一手交钱,一手交货),过程分以下步骤:
我先到一个叫做Slot的交易场所交易,发现你已经到了,那我就尝试喊你交易,如果你回应了我,决定和我交易那么进入第2步;如果别人抢先一步把你喊走了,那我就进入第5步。
我拿出钱交给你,你可能会接收我的钱,然后把货给我,交易结束;也可能嫌我掏钱太慢(超时)或者接个电话(中断),TM的不卖了,走了,那我只能再找别人买货了(从头开始)。
我到交易地点的时候,你不在,那我先尝试把这个交易点给占了(一屁股做凳子上…),如果我成功抢占了单间(交易点),那就坐这儿等着你拿货来交易,进入第4步;如果被别人抢座了,那我只能在找别的地方儿了,进入第5步。
你拿着货来了,喊我交易,然后完成交易;也可能我等了好长时间你都没来,我不等了,继续找别人交易去,走的时候我看了一眼,一共没多少人,弄了这么多单间(交易地点Slot),太TM浪费了,我喊来交易地点管理员:一共也没几个人,搞这么多单间儿干毛,给哥撤一个!。然后再找别人买货(从头开始);或者我老大给我打了个电话,不让我买货了(中断)。
我跑去喊管理员,尼玛,就一个坑交易个毛啊,然后管理在一个更加开阔的地方开辟了好多个单间,然后我就挨个来看每个单间是否有人。如果有人我就问他是否可以交易,如果回应了我,那我就进入第2步。如果我没有人,那我就占着这个单间等其他人来交易,进入第4步。
6.如果我尝试了几次都没有成功,我就会认为,是不是我TM选的这个单间风水不好?不行,得换个地儿继续(从头开始);如果我尝试了多次发现还没有成功,怒了,把管理员喊来:给哥再开一个单间(Slot),加一个凳子,这么多人就这么几个破凳子够谁用!

相关文章

  • JUC--并发工具类:Exchanger

    2018-10-02 原文推荐 死磕Java并发 在API是这么介绍的:可以在对中对元素进行配对和交换的线程的同步...

  • 并发工具类 Exchanger

    简介 Exchanger(交换者),一个用于线程间协作的工具类。Exchanger用于线程间的数据交换,提供了一个...

  • 并发工具类-Exchanger

    1.使用示例 结果: 2.官方文档 线程可以交换元素的同步点。每个线程在exchange方法的入口准备好对象,与伙...

  • JUC--并发工具类:CountDownLatch

    2018-10-02 推荐原文 死磕Java并发 CountDownLatch所描述的是"在完成一组正在其他线程中...

  • JUC--并发工具类:Semaphore

    2018-10-02 原文推荐 死磕Java并发 信号量Semaphore是一个控制访问多个共享资源的计数器,和C...

  • JUC--并发工具类:CyclicBarrier

    2018-10-01 原文推荐 死磕Java并发 CyclicBarrier,一个同步辅助类,它允许一组线程互相等...

  • Java并发工具类

    该篇文章介绍CountDownLatch,CycliBarrier,Semaphore,Exchanger并发工具...

  • Java并发-28.并发工具类-Exchanger

    Exchanger用于进行线程间的数据交换。 提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。 第一个线...

  • 主要并发工具类-Exchanger的使用

    Exchanger 从字面来看是一个交换器,它用来在线程间交换数据。到exchange方法处时会阻塞,传递给对方数...

  • java并发Exchanger的使用

    简介 Exchanger是java 5引入的并发类,Exchanger顾名思义就是用来做交换的。这里主要是两个线程...

网友评论

    本文标题:JUC--并发工具类:Exchanger

    本文链接:https://www.haomeiwen.com/subject/weoooftx.html