27-两个并发任务间的数据交换
3.7 两个并发任务间的数据交换
Java并发API提供了在两个并发任务间进行数据交换的工具类。具体来说, Exchanger
工具类允许在两个线程间定义一个同步点,当两个线程到达该同步点时,它们能够交换内部的数据结构,使得第一个线程的数据结构传递给第二个线程,反之亦然。
在类似于生产者-消费者问题中,这个类可能很有用。生产者-消费者是经典的并发问题:有一块公共的数据缓冲区,若干个生产者向缓冲区提供数据,而若干个消费者从缓冲区中提取数据。 Exchanger
只能在两个线程间同步,因此它适用于仅有一个生产者和一个消费者的生产者-消费者问题。
本节将介绍如何使用 Exchanger
来解决仅有一个生产者和一个消费者的生产者-消费者问题。