0

我有一个程序需要来自 2 个来源的命令。另一个是套接字接口,另一个是事件监听器。

设置监听器后,程序通过调用等待命令:

wait();

命令,当它们到达时,会使用同步方法添加到 Vector (附加到末尾),在添加命令后调用

notify();

发生这种情况时,从 wait() 调用继续执行并处理命令 Vector 的内容,从第一个元素开始。为了测试功能,我在处理方法中添加了一个 Thread.sleep(5000) ,因此处理至少需要 5 秒。

然后我从两个来源生成命令。

事实证明,这些命令不是按照它们到达的顺序处理的!作为事件到达的事件最终会被首先处理,即使来自套接字的命令首先到达。

什么可能导致这种情况?我的设计坏了吗?

4

2 回答 2

1

对我来说,听起来你想使用BlockingQueue。让源向它添加命令,并让处理程序按顺序执行它们。

于 2012-10-19T12:58:21.220 回答
1

使用BlockinQueue,您可以提供:

  • 对发送者、命令发布者没有阻止但受控的访问
  • 消费者的等待点,安全弹出命令的能力
于 2012-10-19T12:58:44.703 回答