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