我有一个程序,它需要2个来源的命令。 另一个是套接字接口,另一个是事件监听器。
设置监听器后,程序通过调用
等待命令wait();
命令在到达时使用synchronized方法添加到Vector(附加到Vector的末尾),在添加命令后添加
notify();
当发生这种情况时,执行从wait()调用继续,并从第一个元素开始处理命令Vector的内容。为了测试功能,我在处理方法中添加了一个Thread.sleep(5000),因此处理至少需要5秒钟。
然后我从两个来源生成了命令。
事实证明,命令没有按照它们到达的顺序处理!即使来自套接字的命令首先到达,最先处理的事件最终也会被处理。
是什么导致这个?我的设计坏了吗?
答案 0 :(得分:1)
对我来说,这听起来像你想使用BlockingQueue。让源代码向它添加命令,让处理程序按顺序执行它们。
答案 1 :(得分:1)
您提供BlockinQueue: