优先级阻塞队列



public class Task implements Comparable{
    
    private int id ;
    private String name;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    @Override
    public int compareTo(Task task) {
        return this.id > task.id ? 1 : (this.id < task.id ? -1 : 0);  
    }
    
    public String toString(){
        return this.id + "," + this.name;
    }
    
}


public class UsePriorityBlockingQueue {

    
    public static void main(String[] args) throws Exception{
        
        
        PriorityBlockingQueue q = new PriorityBlockingQueue();
        
        Task t1 = new Task();
        t1.setId(3);
        t1.setName("id为3");
        Task t2 = new Task();
        t2.setId(4);
        t2.setName("id为4");
        Task t3 = new Task();
        t3.setId(1);
        t3.setName("id为1");
        Task t4 = new Task();
        t4.setId(2);
        t4.setName("id为2");
        Task t5 = new Task();
        t5.setId(5);
        t5.setName("id为5");
        //return this.id > task.id ? 1 : 0;
        q.add(t1);    //3
        q.add(t2);    //4
        q.add(t3);  //1
        q.add(t4);//2
        q.add(t5);//5
        // 1 3 4
        System.out.println("容器:" + q);
        System.out.println(q.take().getId());
        System.out.println("容器:" + q);
//        System.out.println(q.take().getId());
//        System.out.println(q.take().getId());
        

        
    }

}


这个队列会取出id最小的元素,但是内部不排序


你可能感兴趣的:(优先级阻塞队列)