我正在使用 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(使用前将#替换为@)