Ich habe nochnicht soviel mit Java gemacht, jetzt würde ich gerne eine Aufgabe auf Mehrere Threads verteilen die Dynamisch aufgeteilt werden.
Ich habe mir ein Thread klasse geschrieben
Ich habe eine Liste die ich iteriere
Gut soweit funktionierts auch, nun möchte ich jedoch gerne mehrere Files Paralell verarbeiten, und zwar nicht einfach via.
einen neuen Thread aufmachen sondern möglichst eine variable zahl nennen wir sie "ThreadSlots" (z.b. per config festgelegte zahl) an Threads parallel laufen lassen, und immer wenn einer von denen beendet ist einen neuen Thread starten, solange bis keine Files mehr dort sind.
Ich hab leider nichts wirklich konkretes gefunden an Lösungsvorschlägen,
wollte jetzt nen Tipp Haben in welche richtung das geht. Ich habe gesehen das es ThreadPool klassen gibt aber diese wirkten recht kompliziert.
Habe überlegt ob man evtl ne Thread Group anlegen kann und dann immer solange wartet bis die anzahl der aktiven Threads kleiner der ThreadSlots ist. Nur leider weiss ich nicht wie ich die Threads in eine Liste/Array/Collection packen kann.
Kann mir jemand einen tipp geben ?
MfG
Johny
Ich habe mir ein Thread klasse geschrieben
Code:
Class ProcessFileThread extends Thread{
....
/* run verabeitet eine datei*/
}
Ich habe eine Liste die ich iteriere
Code:
while(itFiles.hasNext()){
strFile = (String) itSites.next();
ProcessFileThread t = new ProcessFileThread(strFile);
}
Gut soweit funktionierts auch, nun möchte ich jedoch gerne mehrere Files Paralell verarbeiten, und zwar nicht einfach via.
Code:
ProcessFileThread t2 = new ProcessFileThread(strFile);
Ich hab leider nichts wirklich konkretes gefunden an Lösungsvorschlägen,
wollte jetzt nen Tipp Haben in welche richtung das geht. Ich habe gesehen das es ThreadPool klassen gibt aber diese wirkten recht kompliziert.
Habe überlegt ob man evtl ne Thread Group anlegen kann und dann immer solange wartet bis die anzahl der aktiven Threads kleiner der ThreadSlots ist. Nur leider weiss ich nicht wie ich die Threads in eine Liste/Array/Collection packen kann.
Kann mir jemand einen tipp geben ?
MfG
Johny