当前位置: 首页 > 知识库问答 >
问题:

并发LinkedQueue和列表方法

郑正阳
2023-03-14

我现在正在寻找一个线程安全的程序,允许我在程序中实现时间优先级。如果你愿意,我很乐意与你分享代码,但我认为这对我的问题并不重要。当我开始运行这个程序的一个(非线程安全)版本时,我最初使用的是一个链表,但是现在我切换到了一个线程安全的版本,我已经从一个链表变成了一个并发链接队列。问题是我需要从队列中获取元素(通常从头部,偶尔从尾部)。我真的只需要看看头部的元素是否满足某个性质。在链表版本中,它看起来像这样:

if (order.getQuantity()>= a.getFirst().getQuantity()){
                        Fill orderfill = new  Fill(a.getFirst().getQuantity(),a.getFirst().getLimitPrice(), order.getOrderID(),a.getFirst().getOrderID());
                        fills.add(orderfill);
                        order.setQuantity(order.getQuantity()-a.getFirst().getQuantity());
                        a.removeFirst();

这里a是我的链表。当我切换到并发链接队列时,getFirst方法不再存在。有没有一种队列友好的方法可以实现与链表的getFirst或getLast方法相同的目标?(如您所见,我只需要获取对象,这样我就可以开始使用与该对象相关的方法来做其他事情)。

太谢谢你了!

共有1个答案

周锐
2023-03-14

您可能希望使用ConcurrentLinkedDeque,它提供了< code>getFirst()和< code>getLast()方法

 类似资料:
  • 我需要一个线程安全的并发列表,同时最适合迭代,并且应该返回精确的大小。我想存储物品的拍卖出价。所以我想能够 检索项目的确切出价数量 为项目添加出价 检索给定项目的所有出价。 移除商品出价 我打算把它放在

  • 支持有两个线程运行查询任务,每个线程将返回作为结果,哪种数据结构将更快地合并结果? 并发链接队列 基于链接节点的无界线程安全队列。该队列对元素FIFO(先进先出)进行排序。队列的头部是在队列中存在时间最长的元素。队列的尾部是在队列中出现的时间最短的元素。在队列尾部插入新元素,队列检索操作获取队列头部的元素。当多个线程共享对公共集合的访问时,ConcurrentLinkedQueue是一个适当的选择

  • 我目前正在使用一个并发链接队列,这样我就可以使用自然顺序FIFO,也可以在线程安全的应用程序中使用它。我需要每分钟记录队列的大小,并且考虑到此集合不保证大小,并且计算大小的成本为O(N),是否有任何替代的有界非阻塞并发队列,我可以在获取大小不会是一个昂贵的操作的地方使用,同时添加/删除操作也不昂贵? 如果没有集合,我需要使用带锁的LinkedList吗?

  • 我必须遍历一个列表,并为每个对象调用一个方法,但要并行。在循环之后,还有其他语句,它们必须等待并行方法调用。我如何在Java中做到这一点?

  • 我的一个应用程序通过读取数组列表将对象绘制到屏幕上: 简单代码摘要: 问题是每次用户点击鼠标时我都会添加更多的对象,所以如果用户点击的速度足够快,我会导致程序绘画结结巴巴,因为它在写入时无法读取(arrayList是同步的)。开发人员处理这种并发问题的常用做法是什么? 编辑:下面是调用重新绘制的代码: *其中operations()计算“paintable”对象属性的更改,移除满足特定条件的对象,