1.用可重入锁,控制入队和出队的线程安全。ReentrantLock
2.线程安全
1.读写两个锁分离,理论上来说,并发性能会比ArrayBlockingQueue好
1.非线程安全
2.默认是小顶堆,要实现大顶堆要重写比较方法
3.offer、poll、peek
lambda写法
Queue<Integer> queue = new PriorityQueue<>((i1, i2) -> Integer.compare(i2, i1)); Queue<Integer> queue = new PriorityQueue<>(500, new Comparator<String>(){ @Override public int comapre(Integer t1, Integer t2) { return Integer.compare(t1, t2); } });
Demo
()[https://juejin.im/post/5bf945b95188254e2a04329b]