1

我想知道是否有任何开源(或专有)框架可以模拟并发优先级队列,该队列允许偷看,并以良好的性能从任意索引中删除。

现在我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;

一些分布式缓存允许查询,但是这个操作是性能密集型的,我不确定查询缓存是否是一个好主意。

有人听说过这样的事情吗?

4

1 回答 1

2

你看过Hazelcast

我很害怕我只使用了 Map 实现,所以我不知道它是否支持您需要的模式。

于 2011-01-06T12:24:35.820 回答