因此,我的生产者将n个连续的消息发送到缓冲区,然后发送一条结束消息(请注意,我无法修改Producer.java,并且此代码部分未同步):
for(i=0;i<n;i++)
buffer.send(message[i]);
buffer.send(endMessage);
消息不包含线程的ID或可能导致消息来自哪个线程的东西。
缓冲区需要连续接收这n条消息(+结束消息),我无法从它们之间的另一个线程收到消息。 很好的例子:
received Msg1 from Thread1
received Msg2 from Thread1
etc.
received MsgN from Thread1
received end from Thread1
received Msg1 from Thread2
received Msg2 from Thread2
etc.
received MsgN from Thread2
received end from Thread2
错误示例:
received Msg1 from Thread1
received Msg2 from Thread1
etc.
received Msg6 from Thread1
received Msg1 from Thread2
received Msg2 from Thread2
received Msg7 from Thread1
etc.
如何同步Buffer.java中的代码以按顺序获取消息?显然,在线程发送完之后,我显然需要利用结束消息来允许其他线程,但是从这里开始,所有的问号都会出现。