我想知道是否有任何开源(或专有)框架可以模拟并发优先级队列,该队列允许窥视,并从具有良好性能的任意索引中删除。
现在我正在使用JDK中提供的ConcurrentSkipList
,但基本上我需要在多个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;
某些分布式缓存允许查询,但此操作是性能密集型的,我不确定是否查询缓存是一个好主意。
有人听说过这样的事吗?