使用 Java RealTime 的生产者-消费者架构

2024-04-12

我正在使用 Java Realtime (Sun JRTS 2.2) 设计交易系统,并且想问一些有关最佳实践的问题,因为我担心发明轮子,并且非常确定我的任务已经解决了。

所以我有一个线程不断读取套接字,解析字节并提取消息(二进制协议)。之后,我应该向算法发送消息,该算法实际上会进行一些计算并决定是否进行交易。

所以我认为我应该设计这个系统的方法是将其分为两部分。生产者(周期性(?)实时线程从套接字中提取字节,解析它)和消费者(实时线程(周期性/零星?)从生产者中提取消息,对其进行操作等)。

所以第一个问题是如何设计这两个线程(生产者/消费者)之间的高性能通信?我也很想听到有关设计此类系统的现有经验、建议等的评论。

感谢您的帮助!


我正在处理类似的问题,但在不同的域中:

我是这样处理的:

public class Producer extends Thread{
   private BlockingQueue<E> consumerQueue = null;
   public setConsumerQueue(BlockingQueue<E> val){
      consumerQueue = val;
   }
   // main method where data is received from socket...
   public void run(){
      while(!interrupted()){
           data = socket.receive();// Receive data
           if(consumerQueue!=null) consumerQueue.offer(data);
      }
   }
}

public class Consumer extends Thread{
   private BlockingQueue<E> consumerQueue = new BlockingQueue<E>();
   public Consumer (Producer val){
      val.setConsumerQueue(consumerQueue);
   }
   public void run(){
      while(!interrupted()){
           data = consumerQueue.take();// block until there is data from producer
           if(data !=null) processData(data);
      }
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Java RealTime 的生产者-消费者架构 的相关文章

随机推荐

  • Haskell 中的 undefined 和 Java 中的 null 有什么区别?

    两者的类型都是所有类型的交集 无人居住 两者都可以在代码中传递而不会失败 直到尝试评估它们为止 我能看到的唯一区别是 在 Java 中 有一个漏洞允许null仅针对一个操作进行评估 即引用相等比较 而在 Haskell 中undefined
  • 设置特定文件的 AWS S3 过期时间

    我阅读了 PHP AWS SDK 文档 https docs aws amazon com aws sdk php v2 api class Aws S3 S3Client html https docs aws amazon com aw
  • 二分布局Gephi 0.9.1

    我的问题简单得令人尴尬 how do i plot a bipartite graph in Gephi with a layout like the one you see in the attached image 我真的无法在Geph
  • 是否可以通过显式类型转换将基类对象分配给派生类引用?

    是否可以在 C 中使用显式类型转换将基类对象分配给派生类引用 我已经尝试过了 它会产生运行时错误 不可以 对派生类的引用实际上必须引用派生类的实例 或 null 否则你会期望它如何表现 例如 object o new object stri
  • Jetty 返回 403 Forbidden

    您好 我正在将我的网络应用程序从 tomcat 移植到 Jetty 我正在使用 Jetty runner 来启动它 我使用以下命令来启动 Jetty java jar jetty runner jar port path url path
  • psql 显示 ansi 彩色文本

    My psqlrc有以下选项 setenv LESS iMSx4 FXR setenv PAGER less pset pager always 我想要着色的 psql 输出是 x1B 35m x1B 0m x1B 35mr x1B 0m
  • 检测Python字符串是数字还是字母[重复]

    这个问题在这里已经有答案了 如何检测字符串中的数字或字母 我知道您使用 ASCII 代码 但是哪些函数利用了它们呢 检查字符串是否为非负的数字 整数 和字母 您可以使用str isdigit https docs python org 2
  • 使用 async/await 锁定资源

    我有一个应用程序 其中有一个可由多个客户端访问的共享资源 运动系统 我有一些单独的操作 需要在移动期间访问系统 并且如果同时请求冲突的操作 则应抛出 繁忙 异常 我还有序列器 它们需要获得对运动系统的独占访问权限 以执行多个操作 并穿插其他
  • Objective-C 类别性能

    如果我使用类别将 Objective C 类的实现分解为多个 implementation块 这会使我的 iOS 应用程序生成的二进制文件更大或根本影响性能吗 显然 你不能在运行时获取类的类别详细信息 https stackoverflow
  • 为什么从 App.xaml 设置样式 TargetType="Window" 不起作用?

    我正在 VS2013 中创建一个简单的 WPF 项目 我想将属性应用到我的主窗口 我将它们设置在我的App xaml像这样的文件
  • “入队”和“出队”之间的区别

    有人可以解释一下主要区别吗 我对任何语言编程中的这些函数都没有明确的了解 C 和 C 等编程语言中的一些基本数据结构是堆栈和队列 堆栈数据结构遵循 先进后出 策略 FILO 其中插入或 推入 堆栈的第一个元素是最后一个从堆栈中删除或 弹出
  • 使用 jquery ajax 的两个 CORS 请求之间的时间间隔

    我正在使用 jQuery 向 Web 服务发出 CORS 请求 ajax 根据标准 有一个飞行前请求 然后是实际的 POST 请求 我注意到 每次我尝试进行 Web 服务调用时 都会有两个请求 一个是飞行前请求 一个是实际的 POST 请求
  • ASP.NET - 将 JSON 从 jQuery 传递到 ASHX

    我正在尝试将 JSON 从 jQuery 传递到 ASHX 文件 下面的 jQuery 示例 ajax type POST url test ashx data file dave type ward contentType applica
  • SQL Regex 函数类似于 MySql REGEX 函数

    我正在寻找一个能够执行与 TSQL 的 MySQL REGEX 函数相同的操作的函数 基本上我需要我的查询如下所示 SELECT FROM Routing WHERE Message REGEX RouteRegex 我现在不太热衷于使用
  • C++处理文件文件末尾的空行

    当我使用c 处理文件时 我发现文件末尾总是有一个空行 有人说vim会在文件末尾追加一个 n 但是当我使用gedit时 它也有同样的问题 谁能告诉我原因吗 1 include
  • GCC 4.7.2:带有指向成员函数指针的 std::thread

    在编写测试代码时这个问题 https stackoverflow com questions 15080015 stdthread with pointer to data member我发现下面的注释行无法在 GCC 4 7 2 上编译
  • 为什么Hadoop文件系统不支持随机I/O?

    分布式文件系统 例如 Google 文件系统和 Hadoop 不支持随机 I O 不能修改之前写入的文件 只能写入和追加 他们为什么要这样设计文件系统 该设计有哪些重要优点 P S 我知道 Hadoop 将支持修改写入的数据 但他们表示 它
  • 简单的面试问题变得更难:给定数字 1..100,在给定 k 个缺失的情况下找到缺失的数字

    不久前我有过一次有趣的求职面试经历 这个问题一开始很简单 Q1 我们有一个装有数字的袋子1 2 3 100 每个数字只出现一次 所以有 100 个数字 现在从袋子里随机选出一个号码 找到丢失的号码 当然 我以前听说过这个面试问题 所以我很快
  • Clojure 中使用 clj-http 进行基本身份验证

    我们正在使用clj http https github com dakrone clj http进行 HTTP 基本身份验证 我想发送带有此标头的请求 Authorization Basic dXNlcm5hbWU6cGFzc3dvcmQ
  • 使用 Java RealTime 的生产者-消费者架构

    我正在使用 Java Realtime Sun JRTS 2 2 设计交易系统 并且想问一些有关最佳实践的问题 因为我担心发明轮子 并且非常确定我的任务已经解决了 所以我有一个线程不断读取套接字 解析字节并提取消息 二进制协议 之后 我应该