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

32-实现一个基于优先级的传递队列

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

8.10 实现一个基于优先级的传递队列

Java 9 API提供的几种数据结构可以处理并发应用程序。基于此,我们要强调以下两个数据结构。

  • LinkedTransferQueue :该数据结构应该用于具有生产者/消费者结构的程序中。而这样的程序至少有一个数据生产者和一个数据消费者,并且数据结构由所有数据共享。生产者将数据放入数据结构中,消费者则从中获取数据。如果数据结构为空,则消费者将被阻止,直到有数据消费;如果它已满,则生产者将被阻止,直到有空间放置数据。
  • PriorityBlockingQueue :在此数据结构中,元素按有序方式存储。它们必须用 compareTo() 方法实现 Comparable 接口。在结构中插入一个元素时,它将与结构元素进行比较,直至找到它的位置。

LinkedTransferQueue 中的元素以与入队顺序来存储,因此,较早入队的元素将首先消费。在想开发一个生产者/消费者程序时,可能会出现这样的情况,即程序应根据某种优先级而不是入队时间来消费数据。本节将介绍如何实现一个数据结构用于解决生产者/消费者问题,其元素将按优先级排序,具有较高优先级的元素将首先消费。