Maximale Anz. Threads?
-
Hi,
ein Programm muss eine List von bestimmten Aufgaben abarbeiten. Diese Liste kann teilweise ca. 100-200 Aufgaben haben. Jede Aufgabe kann teilweise zwischen 1-30 sekunden in Anspruch nehmen.
Dass jedoch alle Aufgaben zur gleichen Zeit abgearbeitet werden, will ich Threads benutzen - sprich n-Threads (n für die Anzahl der Aufgaben).
Gibt es hierbei ein Limit von Threads? Oder sollte dabei keine Probleme geben. Wäre nett wenn jemand dazu ein statement geben würde.
Ciao
-
Prinzipiell gibt es kein Limit, nur physikalische. Allerdings habe ich die Erfahrung gemacht, dass ab 25 Threads im Javaprogramm der Schedulingaufwand recht hoch wird, d.h. am Beispiel dass 25 Threads schneller mit dem Zeug fertig waren, als 45.
-
Korbinian schrieb:
Prinzipiell gibt es kein Limit, nur physikalische. Allerdings habe ich die Erfahrung gemacht, dass ab 25 Threads im Javaprogramm der Schedulingaufwand recht hoch wird, d.h. am Beispiel dass 25 Threads schneller mit dem Zeug fertig waren, als 45.
Auf was für einem Rechner lief das?
-
Pentium-M 1,8gHz, 512MB. Das Problem bei mir war allerdings I/O (Netzwerk/Datenbank). Allerdings hab ich die erfahrung gemacht, dass die meisten die Threads verwenden wollen, solche Dinge machen
-
Danke für das Feedback, ist recht interessant. Bei mir hat das erstmal nicht direkt mit einer Netzwerk-Schnittstelle zu tun (außer die standard Socket,URL-Verbindung).
Ein Thread hat die Aufgabe eine URL aufzurufen und zu warten bis eine Antwort (d.h. HTML/XML Texte) zurück kommt.
Durchschnittlich dauert das ca. 0.3sec pro Aufruf. Es kann jedoch auch 10-15sec (in der ausnahme) sein.
-
Wenn du abschätzen kannst wie oft so ein 10-15 sek. "Lag" vorkommt, kannst du auch einen Queue nehmen und nur 3-4 Threads. Muss halt jeder Thread bescheid geben wenn er eine Anfrage abgearbeitet hat damit das nächste aus dem Queue geholt werden kann. Das glättet diese "Lags" im Mittel und du überlastest dein System nicht.
tt