java - 如何检查事件是否已在干扰器环形缓冲区中

标签 java disruptor-pattern

我的disruptor/ringbuffer应用程序有多个生产者和多个工作人员。如果事件不在 RingBuffer 中,则生成器将事件放入 RingBuffer。对于一个事件,worker根据事件中的String id来查询远程状态,如果状态完整则清除该事件。

我的问题是是否可以以可接受的时间复杂度(例如,小于 O(环大小))检查事件是否已在缓冲区中?

事件是这样的:

类我的事件{ 字符串ID;//唯一身份。 boolean 状态;//如果为true,那么worker将删除它。 }

谢谢

最佳答案

一旦事件准备好并在环形缓冲区中可用,它就会向您提供已注册的工作处理程序实现“onEvent()”方法。对于您的情况,如果您想添加条件检查,您可以在事件处理程序或工作处理程序中执行此操作。基本上,处理程序是为此类逻辑而设计的。时间复杂度将是 O(n),因为您需要检查每个事件,一旦检查了事件,您可以根据您的逻辑将其放回同一个环形缓冲区。

关于java - 如何检查事件是否已在干扰器环形缓冲区中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49166806/

相关文章:

spring - 获取环形缓冲区中当前的消息数

java - 监控 LMAX Disruptor

c# - LMAX Disruptor 可以移植到 C# 吗?

Java 类型不匹配,无法转换为将自身作为泛型类型返回

java - swing应用程序、spring应用程序上下文错误

java - 将位图 RGB 像素加载到 BufferedImage 中

java - 使用 Jackson 反序列化包含不同类型的 JSON 数组

java - reactor lmax 线程转储

java - LMAX Disruptor 作为阻塞队列?

java - 如何为 Spring Security 创建类型安全的用户角色?