我正在使用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/