PriorityBlockingQueue

本文介绍了JDK中的PriorityBlockingQueue类,这是一个线程安全的优先级队列,内部使用显式锁来保证线程安全。文章通过示例代码展示了如何创建并使用PriorityBlockingQueue存储实现了Comparable接口的对象,并按照优先级顺序取元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PriorityBlockingQueue类是JDK提供的优先级队列 本身是线程安全的 内部使用显示锁 保证线程安全

PriorityBlockingQueue存储的对象必须是实现Comparable接口的 因为PriorityBlockingQueue队列会根据内部存储的每一个元素的compareTo方法比较每个元素的大小

这样在take出来的时候会根据优先级 将优先级最小的最先取出 


下面是示例代码

[java]  view plain  copy
  1. public static PriorityBlockingQueue<User> queue = new PriorityBlockingQueue<User>();  
  2.   
  3. public static void main(String[] args) {  
  4.     queue.add(new User(1,"wu"));  
  5.     queue.add(new User(5,"wu5"));  
  6.     queue.add(new User(23,"wu23"));  
  7.     queue.add(new User(55,"wu55"));  
  8.     queue.add(new User(9,"wu9"));  
  9.     queue.add(new User(3,"wu3"));  
  10.     for (User user : queue) {  
  11.         try {  
  12.             System.out.println(queue.take().name);  
  13.         } catch (InterruptedException e) {  
  14.             e.printStackTrace();  
  15.         }  
  16.     }  
  17. }  
  18.   
  19. //静态内部类  
  20. static class User implements Comparable<User>{  
  21.   
  22.     public User(int age,String name) {  
  23.         this.age = age;  
  24.         this.name = name;  
  25.     }  
  26.   
  27.     int age;  
  28.     String name;  
  29.   
  30.     @Override  
  31.     public int compareTo(User o) {  
  32.         return this.age > o.age ? -1 : 1;  
  33.     }  
  34. }  


输出结果

wu
wu3
wu5
wu9
wu23
wu55

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值