Re: ThreadGroup und aktive Threads
- From: "Michael Hüttermann" <michael@xxxxxxxxxxxxxxx>
- Date: 24 Mar 2006 05:56:13 -0800
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
.
- Follow-Ups:
- Re: ThreadGroup und aktive Threads
- From: Michael Hüttermann
- Re: ThreadGroup und aktive Threads
- References:
- ThreadGroup und aktive Threads
- From: Hannes Ebner
- ThreadGroup und aktive Threads
- Prev by Date: Re: KeyPair Schlüssel als String
- Next by Date: Re: ThreadGroup und aktive Threads
- Previous by thread: ThreadGroup und aktive Threads
- Next by thread: Re: ThreadGroup und aktive Threads
- Index(es):
Relevant Pages
|