Re: ThreadGroup und aktive Threads




Hannes Ebner schrieb:

Hallo,

ich hab da gerade ein kleines Verständnisproblem beim Thema Threads.

Ich bin am Rumspielen mit einem multithreaded Server dessen Anzahl der
Clientverbindungen begrenzt sein soll. Ich füge dazu jeden Client-Thread
einer ThreadGroup hinzu und prüfe immer wieder die Anzahl der aktiven
Threads. Übersteigt diese eine bestimmte maximale Zahl werden keine
Verbindungen mehr angenommen. Nach dem Erzeugen des ersten Threads liegt
der Thread-Count bei 1. Das ist ok. Nach dem 2. Thread sind es plötzlich
3. Nach dem 3. sind es dann 5 usw.

Warum steigt die Anzahl der Threads nach dem Ersten immer um 2?

Der interessante Abschnitt ist:

--------------------------------------------------------------------
clientThreadGroup = new ThreadGroup("ClientThreads");

while (true)
{
/* create a new socket for each client */
Socket server = listener.accept();

if (clientThreadGroup.activeCount() > maxConnections)
{
server.close();
Thread.sleep(2000);
continue;
}

/* set a timeout for the connection */
server.setSoTimeout(clientTimeOut * 1000);

/* create a communication object (thread) */
ServiceCommunication clientConnection =
new ServiceCommunication();

/* create and start a new thread */
Thread clientThread =
new Thread(clientThreadGroup, clientConnection);
clientThread.setDaemon(true);
clientThread.start();

log.write("active threads: " + clientThreadGroup.activeCount());
}
--------------------------------------------------------------------

Die Klasse ServiceCommunication implementiert Runnable.

BTW, gibt es eine andere Möglichkeit als server.close() um die
Verbindung "abzulehnen" (eigentlich "nach dem Aufbau beenden")? Immerhin
muss dazu ja bereits die Verbindung durch listener.accept() angenommen
worden sein...

das ganze Design würde ich nochmal überdenken! Vor allem würde ich
es nicht mit ThreadGroups machen, diese gehören verboten.

Michael

.



Relevant Pages

  • Re: ThreadGroup und aktive Threads
    ... ich hab da gerade ein kleines Verständnisproblem beim Thema Threads. ... Ich bin am Rumspielen mit einem multithreaded Server dessen Anzahl der ... Clientverbindungen begrenzt sein soll. ... es nicht mit ThreadGroups machen, ...
    (de.comp.lang.java)
  • ThreadGroup und aktive Threads
    ... ich hab da gerade ein kleines Verständnisproblem beim Thema Threads. ... Ich bin am Rumspielen mit einem multithreaded Server dessen Anzahl der ... Clientverbindungen begrenzt sein soll. ...
    (de.comp.lang.java)
  • Re: Begrenzte Anzahl an Verbindungen auf einem Windows Server 2003?
    ... liegt die maximale Anzahl der für Anfragen ... Threads benötigt - stehen keine zur Verfügung kann es evtl. ... Asynchron vorgehen; unter ASP.NET 1.x per Module oder Handler (nicht ganz ...
    (microsoft.public.de.inetserver.iis)
  • Re: Basisfragen zu Thread
    ... Ich wuerde einfach n oder n+1 Threads starten und jeder der Threads führt ... Z.b. die komplette innere Schleife fuer ein 1/ntel der ... Zeitscheiben fuer beide CPUs verteilt? ... In puncto Anzahl Threads konfigurierbar machen? ...
    (de.comp.lang.java)
  • Re: Warten auf ThreadGroup
    ... ThreadGroup sehr leicht Threads gruppieren, ... Hierachie von Threads ohne Threadgroups. ...
    (de.comp.lang.java)