我有以下阻塞队列;
final BlockingQueue<Message> blockingQueue = new LinkedBlockingQueue<Message>();
在哪里
public class Message {
private String author;
private String text;
.......
//setters and getters
.....
}
我有一个将消息放入队列的生产者。
现在我的目标是创建能够从队列中获取特定作者特定消息的消费者?是否可以?
如果不是,还有什么可以替代 BlockingQueue?
最佳答案
您可以使用 ConcurrentMap<String,BlockingQueue<Message>>
其中字符串是 author
ConcurrentMap<String,BlockingQueue<Message>> map = ...;
public Message consume(String str){
return map.get(str).take();
}
public void produce(Message message){
map.get(message.getAuthor()).put(message);
}
这将需要每个作者有一个唯一的 BlockingQueue。
关于java - BlockingQueue - 仅获取特定对象。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9774937/