Senden des gleichen, aber geänderten Objekts über ObjectOutputStream

Ich habe den folgenden Code, der entweder einen Fehler oder ein Missverständnis meinerseits zeigt.

Ich habe die gleiche Liste gesendet, aber über einen ObjectOutputStream geändert. Einmal als [0] und einmal als [1]. Aber wenn ich es lese, bekomme ich zweimal [0]. Ich denke, das liegt an der Tatsache, dass ich über dasselbe Objekt sende und ObjectOutputStream sie irgendwie zwischenspeichern muss.

Funktioniert das so oder sollte ich einen Fehler melden?

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage