Java并发工具包——Exchanger
跟大家说声抱歉,最近由于工作原因很多业务需求压的喘不过气来。所以发文会比较晚,小伙伴们多多担待。
回顾
上一期跟大家分享的是Semaphore,不知道大家还记不记得相关的内容。如果忘了可以找时间回顾一下我之前的文章。
简介
交换器顾名思义就是线程之间交换数据的一个并发工具。当线程A调用Exchanger对象的exchange()方法,该线程会进入阻塞的状态, 直到其他线程调用了同一个Exchanger对象的exchange()方法,所以这个交换的过程是线程安全的。
应用场景
- 两个线程需要以线程安全的方式进行数据传递
- 两个线程之间需要交替处理执行结果的情况
实例
两个线程交替处理数据
![]()
执行结果
![]()
总结
该并发类通过CAS来判断是否需要阻塞(也就是说是否有其他线程到达交换点,如果未到达继续阻塞,如果到达则另一个线程继续执行),所以利用这个工具类可以安全的交换两个线程之间的数据。
常见面试题
- 两个线程之间数据交换使用过什么方式
- 线程之间交换数据后才可以继续执行怎么做
- Exchanger同步机制如何实现
网友评论