为什么 Java 的对象流每次调用 readObject 时都返回相同的对象?
2022-09-04 08:05:31
原谅伪代码 - 我的无线网络已关闭,我目前无法将代码从我的离线计算机复制到StackExchange上。
我有两个java应用程序,通过 java.net.*套接字连接。我正在尝试通过对象输入/输出流将“消息”对象从一个对象传递到另一个对象。
以下是我正在做的事情:
Class Message implements Serializable
{
String text
int data
public Message(String txt, int dat)
{
this.text = txt;
this.data = dat;
}
string toString()
{
return text + " " + data;
}
}
服务器:
服务器有一个名为“发件箱”的队列
for(int i = 0; i < 1000; i++)
{
Message adding = new Message("Hello!",i);
Outbox.add(temp)
Message temp = Outbox.poll();
out.writeObject(temp);
system.out.println(temp)
}
客户:
for(int i = 0; i < 1000; i++)
{
Message temp;
temp = in.readObject()
system.out.println(temp)
}
现在我希望很明显,我希望每个程序的控制台看起来都一样。相反,这就是我得到的。
服务器
Hello 0
Hello 1
Hello 2
Hello 3...
客户
Hello 0
Hello 0
Hello 0
Hello 0...
因此,看起来消息对象正在被读取,但未从流中删除。
如何按预期方式取消我的流并同步它们?