Hi,
ich wollte für ein Programm einige Aufgaben, die relativ lange dauern (encodieren und auf DB-speichern) auf Threads und Callable umsteigen, was auch gut funktioniert nun habe ich als ExecutorService einen chachedThreadPool, womit ich ja eigentlich eine unbestimmte Anzahl Threads ausführen kann, mit FixedThreadsPool gehen ja nur eine bestimmte Anzahl Threads, da ich aber nie weiß wie viele Threads gerade benötigt werden und diese auch etwas länger zum bearbeiten brauchen (1-2 Sekunden meine ich ca.) Dachte ich einfach mal das das am besten läuft.
Das Programm bzw die ganzen Anfragen klappen mit den Threads auch super, nur ist mir beim debuggen aufgefallen , das immer ein neuer Thread erstellt wird also z.b 1,2,3,4,5 und obwohl Thread 1 schon wieder fertig sein müsste wird trotzdem Thread 6 erstellt.
An sich ist es mir egal welche Zahl davorsteht nur wollte ich wissen ob diese "leeren" Threads Leistung im Sinne von Arbeitsspeicher oder Rechenleistung verbrauchen, weil ich schon mit ca 300-400 Threads am Tag rechne nicht, dass sich das nachher noch auf die Leistung auswirkt, oder würde es sich lohnen für jeden Aufruf einen neuen singleExecutor zu erstellen, da müsste der Speicher ja eigentlich nach Ablauf des Threads wieder freigegeben werden, den Excutor sollte der GC dann ja eigentlich finden oder ?
MFG
Hannes
ich wollte für ein Programm einige Aufgaben, die relativ lange dauern (encodieren und auf DB-speichern) auf Threads und Callable umsteigen, was auch gut funktioniert nun habe ich als ExecutorService einen chachedThreadPool, womit ich ja eigentlich eine unbestimmte Anzahl Threads ausführen kann, mit FixedThreadsPool gehen ja nur eine bestimmte Anzahl Threads, da ich aber nie weiß wie viele Threads gerade benötigt werden und diese auch etwas länger zum bearbeiten brauchen (1-2 Sekunden meine ich ca.) Dachte ich einfach mal das das am besten läuft.
Das Programm bzw die ganzen Anfragen klappen mit den Threads auch super, nur ist mir beim debuggen aufgefallen , das immer ein neuer Thread erstellt wird also z.b 1,2,3,4,5 und obwohl Thread 1 schon wieder fertig sein müsste wird trotzdem Thread 6 erstellt.
An sich ist es mir egal welche Zahl davorsteht nur wollte ich wissen ob diese "leeren" Threads Leistung im Sinne von Arbeitsspeicher oder Rechenleistung verbrauchen, weil ich schon mit ca 300-400 Threads am Tag rechne nicht, dass sich das nachher noch auf die Leistung auswirkt, oder würde es sich lohnen für jeden Aufruf einen neuen singleExecutor zu erstellen, da müsste der Speicher ja eigentlich nach Ablauf des Threads wieder freigegeben werden, den Excutor sollte der GC dann ja eigentlich finden oder ?
MFG
Hannes