【发布时间】:2015-07-05 13:06:58
【问题描述】:
我在 SO 和 Google 上搜索了这个问题的答案,但到目前为止找不到合适的解决方案。
我目前正在处理图形路由问题中的 LayerManager。管理器负责提供和重置一组固定的层。
我想用一个阻塞列表来实现消费者-生产者模式,这样只要没有可用的空闲层,传入的路由请求就会被阻塞。到目前为止,我只找到了blocking queue,但由于我们不需要 FIFO、LIFO,但随机访问队列并没有真正起作用。更准确地说,这样的事情应该是可能的:
/* this should be blocking until a layer becomes available */
public Layer getLayer(){
for ( Layer layer : layers ) {
if ( layer.isUnused() && layer.matches(request) )
return layers.pop(layer);
}
}
有什么办法可以做到吗?
【问题讨论】:
-
java.util.concurrent.PriorityBlockingQueue 和你自己的比较器怎么样?
-
谢谢。好吧,在我看来, layer 并没有真正的可比性。它们只匹配给定的请求。
-
@Daniel,我知道这是一个老问题,但是您实施了什么解决方案来解决这个问题?