当前位置:嗨网首页>书籍在线阅读

27-两个并发任务间的数据交换

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

3.7 两个并发任务间的数据交换

Java并发API提供了在两个并发任务间进行数据交换的工具类。具体来说, Exchanger 工具类允许在两个线程间定义一个同步点,当两个线程到达该同步点时,它们能够交换内部的数据结构,使得第一个线程的数据结构传递给第二个线程,反之亦然。

在类似于生产者-消费者问题中,这个类可能很有用。生产者-消费者是经典的并发问题:有一块公共的数据缓冲区,若干个生产者向缓冲区提供数据,而若干个消费者从缓冲区中提取数据。 Exchanger 只能在两个线程间同步,因此它适用于仅有一个生产者和一个消费者的生产者-消费者问题。

本节将介绍如何使用 Exchanger 来解决仅有一个生产者和一个消费者的生产者-消费者问题。