PriorityBlockingQueue优先级规则
来源:互联网 发布:apache官网下载教程 编辑:程序博客网 时间:2024/06/16 17:41
PriorityBlockingQueue里面存储的对象必须是实现Comparable接口。队列通过这个接口的compare方法确定对象的priority。
规则是:当前和其他对象比较,如果compare方法返回负数,那么在队列里面的优先级就比较搞。
下面的测试可以说明这个断言:
规则是:当前和其他对象比较,如果compare方法返回负数,那么在队列里面的优先级就比较搞。
下面的测试可以说明这个断言:
查看打印结果,比较take出来的Entity和left的entity,比较他们的priority
public class TestPriorityQueue {static Random r=new Random(47);public static void main(String args[]){final PriorityBlockingQueue q=new PriorityBlockingQueue();ExecutorService se=Executors.newCachedThreadPool();//execute producerse.execute(new Runnable(){public void run() {int i=0;while(true){q.put(new PriorityEntity(r.nextInt(10),i++));try {TimeUnit.MILLISECONDS.sleep(r.nextInt(1000));} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}});//execute consumerse.execute(new Runnable(){public void run() {while(true){try {out.println("take-- "+q.take()+" left:-- ["+q.toString()+"]");try {TimeUnit.MILLISECONDS.sleep(r.nextInt(1000));} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (InterruptedException e) {e.printStackTrace();}}}});try {TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}out.println("shutdown");}}class PriorityEntity implements Comparable<PriorityEntity> {private static int count=0;private int id=count++;private int priority;private int index=0;public PriorityEntity(int _priority,int _index) {this.priority = _priority;this.index=_index;}public String toString(){return id+"# [index="+index+" priority="+priority+"]";}//数字小,优先级高public int compareTo(PriorityEntity o) {return this.priority > o.priority ? 1: this.priority < o.priority ? -1 : 0;}//数字大,优先级高//public int compareTo(PriorityTask o) {//return this.priority < o.priority ? 1//: this.priority > o.priority ? -1 : 0;//}}
0 0
- PriorityBlockingQueue优先级规则
- 优先级对列PriorityBlockingQueue
- 优先级队列PriorityBlockingQueue
- PriorityBlockingQueue的“优先级“
- 优先级对列PriorityBlockingQueue
- Java 多线程 优先级队列 PriorityBlockingQueue
- 五 : PriorityBlockingQueue 优先级阻塞队列
- 用PriorityBlockingQueue简化线程优先级调度策略
- 进阶篇:优先级队列之PriorityBlockingQueue(十五)
- 具有优先级的阻塞队列 PriorityBlockingQueue
- PriorityBlockingQueue
- PriorityBlockingQueue
- PriorityBlockingQueue
- PriorityBlockingQueue
- Java并发编程-31-阻塞式优先级列表-PriorityBlockingQueue
- Thread学习(十)无缓冲队列synchronousQueue,优先级队列PriorityBlockingQueue
- 并发队列-无界阻塞优先级队列PriorityBlockingQueue原理探究
- PriorityBlockingQueue 优先级阻塞队列的介绍和使用
- Console命令详解,让调试js代码变得更简单
- POJ 1068 解题报告
- excel宏·终极版
- Hive on Spark运行环境搭建
- 鸟哥私房菜实践(6)- NFS
- PriorityBlockingQueue优先级规则
- Access denied for user 'www-data'@'localhost' (using password: NO)
- visual studio 中打开自带的sql server express
- 回溯法扫盲帖
- UITableView个人学习记录
- MyEclipse 中设置sysout快捷键
- Android Provider权限
- NGUI UIPanel的Depth属性
- 成为程序员前需要做的10件事