【发布时间】:2011-12-16 19:36:30
【问题描述】:
我有一种情况,我编写了一个简单的生产者消费者模型,用于从蓝牙读取数据块,然后每 10k 字节将其写入文件。我使用了一个标准的 P-C 模型,使用 Vector 作为我的消息持有者。那么我该如何改变这一点,以便多个线程消费者可以读取相同的消息,我认为这个术语是多播?我实际上是在 Android 手机上使用它,所以 JMS 可能不是一个选项。
static final int MAXQUEUE = 50000;
private Vector<byte[]> messages = new Vector<byte[]>();
/**
* Put the message in the queue for the Consumer Thread
*/
private synchronized void putMessage(byte[] send) throws InterruptedException {
while ( messages.size() == MAXQUEUE )
wait();
messages.addElement( send );
notify();
}
/**
* This method is called by the consumer to see if any messages in the queue
*/
public synchronized byte[] getMessage()throws InterruptedException {
notify();
while ( messages.size() == 0 && !Thread.interrupted()) {
wait(1);
}
byte[] message = messages.firstElement();
messages.removeElement( message );
return message;
}
我引用的是 Oreilly 书籍 Message Parser 部分中的代码
【问题讨论】:
标签: java android message-queue