Java并发工具包——Exchanger

Java并发工具包——Exchanger

跟大家说声抱歉,最近由于工作原因很多业务需求压的喘不过气来。所以发文会比较晚,小伙伴们多多担待。

回顾

上一期跟大家分享的是Semaphore,不知道大家还记不记得相关的内容。如果忘了可以找时间回顾一下我之前的文章。

简介

交换器顾名思义就是线程之间交换数据的一个并发工具。当线程A调用Exchanger对象的exchange()方法,该线程会进入阻塞的状态, 直到其他线程调用了同一个Exchanger对象的exchange()方法,所以这个交换的过程是线程安全的。

应用场景

  • 两个线程需要以线程安全的方式进行数据传递
  • 两个线程之间需要交替处理执行结果的情况

实例

两个线程交替处理数据


Java并发工具包——Exchanger_第1张图片

执行结果


Java并发工具包——Exchanger_第2张图片

总结

该并发类通过CAS来判断是否需要阻塞(也就是说是否有其他线程到达交换点,如果未到达继续阻塞,如果到达则另一个线程继续执行),所以利用这个工具类可以安全的交换两个线程之间的数据。

常见面试题

  • 两个线程之间数据交换使用过什么方式
  • 线程之间交换数据后才可以继续执行怎么做
  • Exchanger同步机制如何实现

你可能感兴趣的:(Java并发工具包——Exchanger)