java - 使用线程池和优先级队列的调度程序?

标签 java threadpool priority-queue

我将在 Java 中使用线程池和优先级队列实现一个调度程序,我想问问是否有人知道任何现有的实现,所以我没有花时间在这上面 :-)...

基本上,java.util.concurrent 包中的 ScheduledThreadPoolExecutor 提供了除了“优先队列”之外几乎所有我需要的功能。我粗略地查看了内置的java库,我找不到任何支持在将元素放入队列后从外部修改和更新元素“优先级”值的优先级队列。

我需要这种优先级队列用于类似下载器的项目。我想允许用户即时修改每个下载的优先级,并且它在队列中的位置会自动更新。 PriorityQueue 不是以这种方式实现的,为了获得正确的优先级,每次我们更改其优先级值时,我们都必须删除并重新提交...

以前有人研究过这个吗?

最佳答案

可以查看PriorityQueuePriorityBlockingQueue .我认为它们中的任何一个都不允许您修改优先级。但是您始终可以删除元素并以修改后的优先级将其添加回来。

关于java - 使用线程池和优先级队列的调度程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/637913/

相关文章:

java - Thread在线程池执行时抛出异常会怎样?

java - 具有可调优先级的优先级队列的高级描述

java - jax-ws: "keep"工具中的 "wsgen"标志究竟有什么作用?

java - "Thread starvation deadlock"发生在这里吗

java - micronaut 将 @Validation 应用于入站 Controller POJO 无法验证

java - 如何在通过 JGit 克隆 repo 后释放文件系统锁

multithreading - java.lang.Thread和ThreadPool中的线程的性能问题

c++ - C++中的大量线程和效率

队列中包含 3 个元素的 Java PriorityQueue 行为

c++ - priority_queue 上的 reinterpret_cast 是否迭代底层 vector 非标准?