T
tuxedo
Gast
Hallo zusammen,
ich hab mich lange gegen NIO gewehrt weil's mir im Vergleich zur "herkömmlichen Technik" einen Socket-Server zu schreiben, zu komplex vor kam. Bzw ich schlicthweg zu faul war mir's im Detail anzusehen. Und bisher hab ich NIO auch noch nicht gebraucht.
Ich hab auch schon vor längerem gelesen dass NIO deutlich performanter und schneller sein soll als das normale IO Package. Deshalb hab ich mich nochmal hingesetzt und vesucht zu verstehen wie das funktioniert. Fazit: Is ja doch nicht so schwer
Aber eins versteh ich noch nicht:
Wo liegt der tiefere Sinn der "non-blocking" Technik? Ich hab mir das Beispiel hier angesehen: http://javamagazin.de/itr/online_artikel/psecom,id,127,nodeid,11.html
Okay, da geht's um einen Single-Threaded-Server. Der kann nur einen Client nach dem anderen Bedienen. Da verstehe ich auch warum man non-blocking gebrauchen kann: Solange wie kein Client versucht zu connecten, solange kann ich in meinem einzelnen Thread was anderes machen, was sonst ja nicht ginge. Klingt logisch.
Aber nehmen wir jetzt mal einen Spiele-Server der mit mehreren Clients gleichzeitig kommunizieren muss. Da brauche ich eh' Threads wenn ich die Clients gleichzeitig mit Informationen versorgen will.
Heisst also: Jeder Client kommt in einen Thread.
Aber wo liegt da jetzt der "Gewinn" des Non-Blockings? Wäre es nicht "praktischer" Dinge, die ich neben dem warten auf neue Clients noch machen will/muss in einem eigenen Thread zu behandeln? Vor allem stell ich mir's "kompliziert" vor, neben dem "non-blocking" ohne weiteren Thread, Dinge zu erledigen die selbst in eine While-Schleife gehören oder unter Umständen sehr viel Zeit benötigen. Soll der Client dann unter Umständen 'ne Minute warten bis er dran kommt oder wie?
Wo habt ihr bis jetzt "non-blocking" gebrauchen können? Oder macht das wirklich nur Sinn wenn ich einen Single-Threaded-Server haben will oder muss?!
Vielleicht kann mich da jemand in die richtige Richtung weisen...
Gruß
Alex
ich hab mich lange gegen NIO gewehrt weil's mir im Vergleich zur "herkömmlichen Technik" einen Socket-Server zu schreiben, zu komplex vor kam. Bzw ich schlicthweg zu faul war mir's im Detail anzusehen. Und bisher hab ich NIO auch noch nicht gebraucht.
Ich hab auch schon vor längerem gelesen dass NIO deutlich performanter und schneller sein soll als das normale IO Package. Deshalb hab ich mich nochmal hingesetzt und vesucht zu verstehen wie das funktioniert. Fazit: Is ja doch nicht so schwer
Aber eins versteh ich noch nicht:
Wo liegt der tiefere Sinn der "non-blocking" Technik? Ich hab mir das Beispiel hier angesehen: http://javamagazin.de/itr/online_artikel/psecom,id,127,nodeid,11.html
Okay, da geht's um einen Single-Threaded-Server. Der kann nur einen Client nach dem anderen Bedienen. Da verstehe ich auch warum man non-blocking gebrauchen kann: Solange wie kein Client versucht zu connecten, solange kann ich in meinem einzelnen Thread was anderes machen, was sonst ja nicht ginge. Klingt logisch.
Aber nehmen wir jetzt mal einen Spiele-Server der mit mehreren Clients gleichzeitig kommunizieren muss. Da brauche ich eh' Threads wenn ich die Clients gleichzeitig mit Informationen versorgen will.
Heisst also: Jeder Client kommt in einen Thread.
Aber wo liegt da jetzt der "Gewinn" des Non-Blockings? Wäre es nicht "praktischer" Dinge, die ich neben dem warten auf neue Clients noch machen will/muss in einem eigenen Thread zu behandeln? Vor allem stell ich mir's "kompliziert" vor, neben dem "non-blocking" ohne weiteren Thread, Dinge zu erledigen die selbst in eine While-Schleife gehören oder unter Umständen sehr viel Zeit benötigen. Soll der Client dann unter Umständen 'ne Minute warten bis er dran kommt oder wie?
Wo habt ihr bis jetzt "non-blocking" gebrauchen können? Oder macht das wirklich nur Sinn wenn ich einen Single-Threaded-Server haben will oder muss?!
Vielleicht kann mich da jemand in die richtige Richtung weisen...
Gruß
Alex