使用线程池和优先队列的调度器?

4
我将使用Java实现一个调度程序,使用线程池和优先级队列。我想问一下是否有任何现有的实现,这样我就不必浪费时间了:-)...
基本上,java.util.concurrent包中的ScheduledThreadPoolExecutor提供了几乎我所需要的所有功能,除了“优先级队列”。我粗略地检查了内置的Java库,没有找到任何支持在元素被放入队列后外部修改和更新“优先级”值的优先级队列。
我需要这种类型的优先级队列用于类似下载器的项目中。我希望允许用户即时修改每个下载的优先级,并自动更新其在队列中的位置。PriorityQueue没有以这种方式实现,在每次更改其优先级值以获取正确的优先级时,我们都必须删除并重新提交它...
有人之前做过吗?
2个回答

4
您可以查看PriorityQueuePriorityBlockingQueue。我认为它们都不允许您修改优先级。但是,您始终可以删除一个元素并使用修改后的优先级将其添加回去。

0

你可以使用Quartz,它是一个完全功能的调度程序,并支持优先级


是的,我知道Quartz,但我不想在我的分发中携带一个大家伙来完成一个小功能。此外,问题仍然存在,因为Quartz不支持即时更新“优先级”...我想我应该节省时间,使用ScheduledThreadPoolExecutor支持的内容 :-) - instcode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接