Ich habe eine einfache Java IO-TCP-Server/Client-Protoyp, wo der Server schwer auf den Client schreibt, und der Client schreibt gelegentlich auf den Server. Schreiben erfolgt eine while-Schleife, insbesondere im run()
Verfahren eines Worker
Gewinde, als Standard:Lesen und Schreiben Java-Socket ohne Blockierung
@Override
public void run() {
while (true) {
// Server writes to client
try {
socket.getOutputStream.write(writeArray);
} catch (Exception e) {
System.exit(1);
}
}
Dies wird in einer While-Schleife, so dass, wenn ich auch eine Leseoperation enthalten, wäre es zu blockieren.
Gibt es ein Standardmuster für gelegentliche Lesevorgänge, ohne die CPU-Zyklen zu blockieren oder zu verschwenden?
Sie können auf separaten Threads lesen und schreiben. – flakes
Ja, darüber hatte ich auch nachgedacht. Auf der einen Seite mag ich nicht, Tonnen von Threads spawnen, wenn sie nicht kritisch sind, aber ich denke, es würde mir Lesezugriff geben, ohne den Schreib-Thread überhaupt zu beeinflussen. –
Für kleine Datenmengen müssen Sie dies möglicherweise nicht tun, aber für stärkeren Datenverkehr können separate Threads sehr viel effizienter werden. – flakes