更改 PriorityBlockingQueue 中的现有任务优先级

Posted

技术标签:

【中文标题】更改 PriorityBlockingQueue 中的现有任务优先级【英文标题】:change existing task prority in PriorityBlockingQueue 【发布时间】:2015-05-28 06:46:30 【问题描述】:

如果某个任务已经在阻塞队列中(假设轮询已满)并且我现在希望它具有更高的优先级,我该如何更改它?

E.G:实现这个答案

Specify task order execution in Java

我把线程轮询设置为 3,发送 8 个任务,优先级均为 1。

现在 3 个正在执行,5 个正在等待可用线程。

现在我希望等待列表中的任务号 3 优先级为 2,这意味着当一个线程在另一个 4 之前打开时,它将立即执行。

可以吗?

P.S - 我想在安卓应用上做,推荐吗?

【问题讨论】:

【参考方案1】:

如果它已经在PriorityQueue 中,则更改优先级不会影响任何事情。您必须将其移除并重新插入。

【讨论】:

如果是这样,如何删除特定任务?如果执行者已经关闭,可以这样做吗? (一旦所有请求都在队列中,我将其关闭)

以上是关于更改 PriorityBlockingQueue 中的现有任务优先级的主要内容,如果未能解决你的问题,请参考以下文章

PriorityBlockingQueue 原理分析

源码分析-PriorityBlockingQueue

Queue 阻塞队列 PriorityBlockingQueue

如何实现 PriorityBlockingQueue 的循环排序?

JDK源码分析-PriorityBlockingQueue

PriorityBlockingQueue 1.8 源码解析