Die Anzahl der Threads kannst du ja selbst bestimmen. Wichtig ist nur, dass man nicht für jeden Client zwingend einen eigenen Thread braucht.
Hast du den Artikel den Franz in obigen Link gepostet hat gelesen?
->
http://today.java.net/cs/user/print/a/350
Wenn du das gelesen hast, müsstest du auch auf den Tricher gekommen sein dass NIO ne "coole" Sache ist.
Bisher mit dem alten IO, hast du einen Thread pro Client. In jedem Thread wird "blockierend" gewartet bis Daten eingegangen sind.
Im neuen NIO, kann man einen EventHanlder einbauen der beispielsweise alle Clients überwacht. Hast du beispielsweise 1000 Clients, hast du dann nicht mehr 1000 Threads (einen pro Client), sondern kannst in einem Thread schauen welcher Client gerade bedient werden will. Und dann kannst du beispielsweise immer 10 zu bedienende Clients mit einem Thread abdecken (soll heißen dieser Eine Thread kümmer sich um 10 Clients, ohne 10 weitere Thread zu erstellen. Wäre ja sonst nix anderes wie das alte Java IO).
In Bezug auf dieses Beispiel nochmal der Vergleich:
Nehmen wir 1000 Clients an. Von diesen 1000 Clients wollen just in diesem Moment 15 Clients Daten austauschen... Wieviele Threads brauch ich dann?
Java IO:
Pro Client ein Thread -> 1000 Threads
Denn ich weiß ja nicht welcher Client gerade Daten austauschen will...
Java NIO:
Einen Thread für die Überwachung _aller_ Clients und zwei weitere Threads um die Clients zu bedienen: 15 Clients wollen bedient werden, wir haben die Anwendung jedoch so gestaltet dass pro Bedien-Thread 10 Clients bedient werden können, also brauchen wir 2 Bedienthreads. Macht zusammen 3 Threads.
Du siehst: Willst du einen Server haben, der seeeehr viele Clients verkraftet, dann kommt man mit Java IO schnell an seine Grenzen. Weil irgendwann ist man an einem Punkt angelangt wo man einfach keine neuen Threads mehr erstellen kann und das System aus allen Nähten platzt.
Java NIO hat das Methoden und Ansätze das geschickter zu lösen.
Aber wie gesagt, ließ den Artikel, dann siehst du was ich meine ;-)
Gruß Alex