我想将元组对象存储在并发的 java 集合中,然后有一个高效的阻塞查询方法,它返回与模式匹配的第一个元素。如果没有这样的元素可用,它将阻塞,直到出现这样的元素。
例如,如果我有一堂课:
public class Pair {
public final String first;
public final String Second;
public Pair( String first, String second ) {
this.first = first;
this.second = second;
}
}
还有一个像这样的集合:
public class FunkyCollection {
public void add( Pair p ) { /* ... */ }
public Pair get( Pair p ) { /* ... */ }
}
我想像这样查询它:
myFunkyCollection.get( new Pair( null, "foo" ) );
它返回字段等于“foo”或块的第一个可用对,second
直到添加这样的元素。另一个查询示例:
myFunkyCollection.get( new Pair( null, null ) );
应该返回第一个可用的对,无论其值如何。
解决方案是否已经存在?如果不是这种情况,您建议如何实施该get( Pair p )
方法?
澄清:该方法get( Pair p)
还必须删除元素。名字的选择不是很聪明。一个更好的名字将是take( ... )
。