我需要使用 aPriorityQueue
来对 FIFO 元素进行排序。该队列将包含一个 Message 对象,每个对象都将具有一个double timestamp
以及一个int counter
跟踪该消息已收到多少确认的消息。有两种类型的消息 - 带有数据的消息和带有确认消息的消息。只有带有数据的消息才能放入队列中。我正在编写一个比较器,用于对队列进行排序。只有当它收到所有确认时,我才会弹出队列的头部。
问题是,当收到确认消息时,我需要增加收到此确认的消息的确认计数器。为此,我需要通过检查队列中每条消息的特定字段(发送时间)来查找消息。
如何才能做到这一点?我想到了以下几点:
获取一个迭代器,然后遍历队列检查每个对象的特定字段。
不过,这对我来说似乎是一种残酷的方法。有没有更好的办法?我们可以像这样访问队列中的对象吗?
注意:我需要使用 PriorityQueue 因为我正在实现的功能(使用 Lamport 的逻辑时钟在分布式系统中的总有序多播)需要有一个有序队列。如果没有得到每个节点的确认,我无法将队列头部的消息传递给应用程序线程。此外,即使它已收到所有确认,我也无法传递不在队列头部的消息。