Danke erst mal. Da das für mich Neuland ist, muss ich mich in die Materie erst mal etwas einlesen.
Ich muss halt sicherstellen, dass folgendes funktioniert: ThreadPool mit z.B. 5 Threads. Dann habe ich JobA, JobB, JobC. JobA macht was in der Datenbank, JobB ließt Dateien aus einem Ordner analysiert diese und schreibt bestimmte Daten in die
DB, JobC macht auch irgend etwas.
Jetzt ist es so, dass ich 2x JobA erzeuge und in die JobListe hinzufüge. Der WorkerThread verteilt die dann ja auf zwei Threads und diese werden bearbeitet. Dann schiebe ich noch 5x JobB in die JobListe und normalerweise würden dann drei davon auf die verbleibenden wartenden drei Threads aufgeteilt, die zwei restlichen Jobs bleiben in der Liste, bis wieder ein Thread frei ist. Es soll aber so sein, dass JobB nicht auf die 3 verbleibenden Thread aufgeteilt werden, sondern festgestellt wird, dass JobB immer nur einzeln abgearbeitet werden, d.h. es wird nur ein weiterer Thread mit einem Auftrag belegt. Es bleiben dann noch zwei wartende Threads übrig, die dann noch weitere eintreffende JobsA oder JobsC abarbeiten könnten. Wenn dann der eine JobB abgearbeitet wurde, kann den nächste JobB aus der Liste geholt werden usw.
Ich habe mal grob Deine Anhaltspunkte durchgestöbert und ich denke, dass ich mit den Semaphoren da am besten weiterkomme. Ich setze mich einfach mal dran und probiere das aus.