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

11-运用按优先级排序的阻塞线程安全队列

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

7.4 运用按优先级排序的阻塞线程安全队列

在实际应用数据结构的过程中,有序队列是非常重要的。Java提供的 Priority BlockingQueue 可以实现该特性。

所有插入 PriorityBlockingQueue 中的元素都必须要实现 Comparable 接口,或者可以在队列的构造方法中传入 Comparator 对象。由于该接口的 compareTo() 方法可以传入一个同类型的对象,因此可以对两个对象进行比较:一个对象负责调用方法,另一个则作为参数传入到该方法。如果对象值小于参数值,则该方法必须返回一个负数;如果对象值大于参数值,则该方法应该返回正数;如果两者的值相等,则该方法必须返回零。

当插入一个元素到 PriorityBlockingQueue 中的时候,它会通过 compareTo() 方法来决定该元素在队列中的位置。值较大的元素将会插入队头或队尾,这取决于 compareTo() 方法的实现。

PriorityBlockingQueue 是一个支持阻塞行为的数据结构,而支持阻塞行为这个特点正是它另外一个极为重要的亮点。在线程执行条件不能立即满足的情况下,它有一个方法可以阻塞该线程直到执行条件满足为止。

本节将介绍 PriorityBlockingQueue 类的使用方法。在案例中,我们将多个不同优先级的事件对象存储到同一个队列的列表中,并且检查该队列是否按照所预期设想的来排序。