我已经实现了从头部提取项目的例程,更新它的优先级并使用这样的非阻塞方法将其放回队列(使用 AtomicReference)
def head(): Entry = {
def takeAndUpdate(e: Entry, success: Boolean): Entry = {
if (success) {
return e
}
val oldQueue = queueReference.get()
val newQueue = oldQueue.clone()
val item = newQueue.dequeue().increase()
newQueue += item
takeAndUpdate(item.e, queueReference.compareAndSet(oldQueue, newQueue))
}
takeAndUpdate(null, false)
}
现在我需要找出队列中的任意条目,更改它的优先级并将其放回队列。似乎 PriorityQueue 不支持这一点,那么我应该使用哪个类来完成所需的行为?