我将在 Java 中使用线程池和优先级队列实现一个调度程序,我想问问是否有人知道任何现有的实现,所以我没有花时间在这上面 :-)...
基本上,java.util.concurrent 包中的 ScheduledThreadPoolExecutor 提供了除了“优先队列”之外几乎所有我需要的功能。我粗略地查看了内置的java库,我找不到任何支持在将元素放入队列后从外部修改和更新元素“优先级”值的优先级队列。
我需要这种优先级队列用于类似下载器的项目。我想允许用户即时修改每个下载的优先级,并且它在队列中的位置会自动更新。 PriorityQueue 不是以这种方式实现的,为了获得正确的优先级,每次我们更改其优先级值时,我们都必须删除并重新提交...
以前有人研究过这个吗?
最佳答案
可以查看PriorityQueue或 PriorityBlockingQueue .我认为它们中的任何一个都不允许您修改优先级。但是您始终可以删除元素并以修改后的优先级将其添加回来。
关于java - 使用线程池和优先级队列的调度程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/637913/