Java - ReadObject mit nio

In einem traditionellen blocking-thread-server, ich würde so etwas tun

class ServerSideThread {

    ObjectInputStream in;
    ObjectOutputStream out;
    Engine engine;

    public ServerSideThread(Socket socket, Engine engine) {
        in = new ObjectInputStream(socket.getInputStream());
        out = new ObjectOutputStream(socket.getOutputStream());
        this.engine = engine;
    }

    public void sendMessage(Message m) {
        out.writeObject(m);
    }

    public void run() {
        while(true) {
            Message m = (Message)in.readObject();
            engine.queueMessage(m,this); //give the engine a message with this as a callback
        }
    }
}

Nun, das Objekt kann erwartet werden, ziemlich groß sein. In meinem nio-Schleife, ich kann nicht einfach warten, bis das Objekt, durch zu kommen, alle meine anderen verbindungen (mit viel kleinerer workloads) wartet auf mich.

Wie bekomme ich nur mitgeteilt, dass eine Verbindung für das gesamte Objekt, bevor es erzählt meine nio-Kanal bereit?

InformationsquelleAutor corsiKa | 2011-05-02
Schreibe einen Kommentar