我想知道是否有任何开源(或专有)框架可以模拟并发优先级队列,该队列允许偷看,并以良好的性能从任意索引中删除。
现在我ConcurrentSkipList
在 JDK 中使用 available,但基本上我需要在多个 JVM 之间共享它。
最困难的部分是,当我轮询队列时,我正在做这样的事情:
List<Entry> dequeued = new ArrayList<>(thisManyIwant);
for(Entry entry : queue){
if(dequeued.size()>=thisManyIwant) break;
if(predicate.apply(entry)){
// Entry satisfies criteria
if(queue.remove(entry){
// OK, got it
dequeued.add(entry);
}else{
// damn, somebody took it before I could :(
}
}else{
// It's not something I want, move on to the next one.
}
}
return dequeued;
一些分布式缓存允许查询,但是这个操作是性能密集型的,我不确定查询缓存是否是一个好主意。
有人听说过这样的事情吗?