前言
上面我们介绍了信号量,再来说说交换者,这个东西用的不是很多,所以一般也不被经常关注,但是我们还是最好了解下,下面我将从什么是Exchanger以及如何使用Exchanger两个方面谈谈这个用于线程间协调的工具类。
什么是Exchanger?
Exchanger主要是用于线程之间进行数据交换的,提供一个同步点,在这个同步点,两个线程可以交换彼此的数据;两个线程通过Exchanger方法来进行交换,当第一个线程先执行Exchanger()方法,他会一直等待第二个线程也执行Exchanger方法,然后两个线程交换数据。
举个通俗点的例子,就例如,你和你女朋友一起去逛超市,然后进入超市之后,你俩约好每个人去买各自需要的用品,然后约好在结算台那里见面,不管你俩谁先买好东西到达服务台,都需要把东西放在服务台然后等待对方,当你俩都到达结账台时,你俩互相交换各自买的东西,看看对方都买了些啥(当然如果你跟你女朋友真是这么逛街的,估计也处不长,扯远了点),然后结账,完事。这个过程就是Exchanger交换数据过程,而你俩分别就是那两个线程。
如何使用Exchanger?
首先我们需要一个创建一个交换者
Exchanger<String> exgr = new Exchanger<String>();
然后到达同步点,等待交换ÿ