我有以下代码显示我的错误或误解。
我发送了相同的列表,但通过 ObjectOutputStream 进行了修改。一次为 [0],其他为 [1]。但是当我阅读它时,我得到 [0] 两次。我认为这是因为我通过同一个对象发送并且 ObjectOutputStream 必须以某种方式缓存它们。
这是应有的工作,还是我应该提交错误?
导入java.io.*;
导入java.net.*;
导入 java.util.*;
公共类OOS {
公共静态 void main(String[] args) 抛出异常 {
线程 t1 = 新线程(新可运行(){
公共无效运行(){
尝试 {
ServerSocket ss = 新的 ServerSocket(12344);
套接字 s= ss.accept();
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
列表相同 = new ArrayList();
相同的.add(0);
oos.writeObject(相同);
相同的.clear();
相同的.add(1);
oos.writeObject(相同);
} 捕捉(异常 e){
e.printStackTrace();
}
}
});
t1.start();
套接字 s = new Socket("localhost", 12344);
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
// 按预期输出 [0]
System.out.println(ois.readObject());
// 输出 [0],但预期为 [1]
System.out.println(ois.readObject());
System.exit(0);
}
}