32-实现一个基于优先级的传递队列
8.10 实现一个基于优先级的传递队列
Java 9 API提供的几种数据结构可以处理并发应用程序。基于此,我们要强调以下两个数据结构。
LinkedTransferQueue
:该数据结构应该用于具有生产者/消费者结构的程序中。而这样的程序至少有一个数据生产者和一个数据消费者,并且数据结构由所有数据共享。生产者将数据放入数据结构中,消费者则从中获取数据。如果数据结构为空,则消费者将被阻止,直到有数据消费;如果它已满,则生产者将被阻止,直到有空间放置数据。PriorityBlockingQueue
:在此数据结构中,元素按有序方式存储。它们必须用compareTo()
方法实现Comparable
接口。在结构中插入一个元素时,它将与结构元素进行比较,直至找到它的位置。
LinkedTransferQueue
中的元素以与入队顺序来存储,因此,较早入队的元素将首先消费。在想开发一个生产者/消费者程序时,可能会出现这样的情况,即程序应根据某种优先级而不是入队时间来消费数据。本节将介绍如何实现一个数据结构用于解决生产者/消费者问题,其元素将按优先级排序,具有较高优先级的元素将首先消费。