У меня есть следующий код, который показывает ошибку или недоразумение с моей стороны.
Я отправил тот же список, но изменил его через ObjectOutputStream. Один раз как [0], а другой как [1]. Но когда я читаю это, я получаю [0] дважды. Я думаю, это связано с тем, что я посылаю один и тот же объект, и ObjectOutputStream должен как-то их кэшировать.
Это работает как надо, или я должен сообщить об ошибке?
import java.io.*;
import java.net.*;
import java.util.*;
public class OOS {
public static void main(String[] args) throws Exception {
Thread t1 = new Thread(new Runnable() {
public void run() {
try {
ServerSocket ss = new ServerSocket(12344);
Socket s= ss.accept();
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
List same = new ArrayList();
same.add(0);
oos.writeObject(same);
same.clear();
same.add(1);
oos.writeObject(same);
} catch(Exception e) {
e.printStackTrace();
}
}
});
t1.start();
Socket s = new Socket("localhost", 12344);
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
// outputs [0] as expected
System.out.println(ois.readObject());
// outputs [0], but expected [1]
System.out.println(ois.readObject());
System.exit(0);
}
}