|
|
1
13
实际上我不会把它分类。虽然我现在不能把示例代码放在一起,但我建议使用decorator模式的一个版本。 PriorityBlockingQueue . 我发现这个类使用了以下接口:
在类的构造函数中,接受
然后通过
|
|
|
2
6
有一个在 Google Collections/Guava 图书馆: MinMaxPriorityQueue .
|
|
|
3
2
在我的头顶上,我会将其子类化并覆盖put方法来强制执行此操作。如果发生异常,则抛出异常或执行任何适当的操作。 比如:
Edit:add和put invoke提供,所以覆盖它就足够了
|
|
|
4
2
根据Frank V的建议实现了BoundedPriorityBlockingQueue之后,我意识到它并没有达到我想要的效果。 主要的问题是,我必须插入到队列中的项可能比队列中已经存在的所有项具有更高的优先级。 为了充实弗兰克五世的建议,我使用了以下片段。。。
... 私有最终可重入锁定;//=新建ReentrantLock(); 私人最终条件未满;
我仍然在“PivotPriorityBlockingQueue”上工作,如果有人感兴趣,我可以发布它。 |
|
|
5
1
|
|
|
6
0
如果要执行的Runnables的顺序不严格(即:即使存在较高优先级的任务,也可能会执行一些较低优先级的任务),那么我建议执行以下操作,可以归结为定期减少PriorityQueue的大小:
如果顺序需要严格,这显然会失败,因为耗尽将导致一个时刻,使用并发访问从队列中检索低优先级任务。 优点是,这是线程安全的,并且可能会以优先级队列设计所能达到的最快速度实现。 |
|
|
7
0
不幸的是,没有
https://gist.github.com/JensRantil/30f812dd237039257a3d
并使用它作为模板来实现您自己的包装器
|
|
|
8
-1
看一看这个 ForwardingQueue Semaphore . |
|
|
9
-1
还有另一个实现 here 它似乎在满足你的要求: BoundedPriorityQueue实现了一个优先级队列,其元素数的上限为。如果队列未满,则始终添加添加的元素。如果队列已满且添加的元素大于队列中最小的元素,则删除最小的元素并添加新元素。如果队列已满且添加的元素不大于队列中最小的元素,则不添加新元素。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |