首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java :是否使用Disruptor。。

Java :是否使用Disruptor。。
EN

Stack Overflow用户
提问于 2011-12-19 20:58:38
回答 1查看 1.2K关注 0票数 3

嘿,

目前,我正在开发一个程序,该程序从amq队列中获取2个值,并对它们执行一系列数学计算。在我的程序订阅并通过回调(侦听器)接收消息的amq服务器上已经创建了一个主题。

现在,只要有消息到达,这两个值就会从SynchronizedDescriptiveStatistics对象中取出并添加到该对象中。每次添加到值列表之后,整个计算序列都会重新执行(这实际上是需求的一部分)。

我现在面临的问题是,由于我使用的是侦听器,有时在计算过程中会收到一条或多条消息。虽然SynchronizedDescriptiveStatistics自己负责处理所有与线程相关的问题,但当它释放锁或其他东西时,它会立即将所有等待值添加到它的数字列表中。虽然我的问题是添加一个值,然后对它执行calcls,然后是第二个值,等等。

我想到的解决方案是在我的程序中使用作业队列(而不是amq队列)。这样,只要calcs结束,程序就会在队列中查找更多作业,并相应地继续执行。

由于我也在寻找效率和速度,我认为Disruptor框架可能会很好地解决这个问题,并且它针对线程化的情况进行了优化。但我不确定在我的应用程序中实现Disruptor的麻烦是否值得,因为常规的标准队列可能足以满足我正在尝试的工作。

我还要告诉你,需要执行计算的数据量很大,而且它会不断出现,并且每次以连续的方式添加单个值时,都需要重新执行整个计算。因此,请牢记效率和海量数据,从长远来看,您认为什么将是有用的。

正在等待回复。。。

致以问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-20 18:49:23

我将给出这个问题的典型答案:首先测试,然后根据您的结果做出决定。

尽管您谈到了效率,但您并没有明确表示性能是一个基本要求。如果您对性能需求有一个想法,您可以使用队列来模拟一个简单的原型,而不是Disruptor的基本实现,并测量两者的性能。

如果其中一个比另一个好很多,那就是你的答案。但是,如果需要付出更多的努力来实现,特别是如果它也没有给您提供所需的效率,或者您没有任何严格的性能要求,那么这就表明该解决方案不是正确的解决方案。

首先衡量,然后根据你的结果做出决定。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8561703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档