Wysłanie tego samego, ale zmodyfikowanego obiektu przez ObjectOutputStream

Mam następujący kod, który pokazuje błąd lub nieporozumienie z mojej strony.

Wysłałem tę samą listę, ale zmodyfikowałem w ObjectOutputStream. Raz jako [0] i inne jako [1]. Ale kiedy to czytam, dostaję [0] dwukrotnie. Myślę, że jest to spowodowane faktem, że wysyłam ten sam obiekt, a ObjectOutputStream musi je jakoś buforować.

Czy to działa tak jak powinno, czy powinienem zgłosić błąd?

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);
    }
}

questionAnswers(3)

yourAnswerToTheQuestion