我正在使用Java Realtime(Sun JRTS 2.2)设计贸易系统,并且想对最佳实践提出几个问题,因为我害怕发明轮子,并且很确定我的任务已经解决了。

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

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

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

谢谢您的帮助!

最佳答案

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

这是我的处理方式:

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);
      }
   }
}

关于java - 使用Java RealTime的生产者-消费者体系结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8300851/

10-12 05:26