Hallo,
ich habe eine Frage zum Thema Thread-Pools, Thread und Callable.
Hier zunächst mein Szenario. Ich möchte in meinem Java Programm bestimmte Aufgaben parallelisieren. Als Basis möchte ich einen Thread Pool verwenden, da hier ich recht einfach steuern kann, wieviele Threads (min,max,etc) wann und wie lange existieren sollen. Die verschiedenen Aufgaben übergebe ich an den Thread Pool als Callables in einer Warteschlange. Das funktioniert auch alles ganz gut. Die Callables werden durchlaufen und ich erhalte das Ergebis wie gewünscht zurück.
Für die Abarbeitung des Callable-Objektes benötige ich eine Verbindung zu einem externen System. Wenn ich nun in meinem Thread-Pool 10 Threads habe und 100 Callable abarbeiten möchte, würde dies zu 100 Verbindungsoperationen (öffnen/schließen) führen.
Besser wäre, wenn die Verbindung im Thread hergestellt würde und das Callable diese nutzen kann. Dadurch bräuchte ich ingesamt nur 10 mal eine Verbindung (also je Thread) herstellen.
Wie kann nun das Callable auf den Thread bzw. auf dessen Verbindungsinformationen zugreifen? Eine spezielle Thread-Klasse kann ich ja mittels ThreadFactory dem Pool Creator übergeben. Allerdings gibt es im Thread ja nur Runnables und keine Callables.
Wenn ich das Callable erstelle, gibt es den Thread ja auch noch nicht.
Hat jemand eine Idee?
Gruß Tim
ich habe eine Frage zum Thema Thread-Pools, Thread und Callable.
Hier zunächst mein Szenario. Ich möchte in meinem Java Programm bestimmte Aufgaben parallelisieren. Als Basis möchte ich einen Thread Pool verwenden, da hier ich recht einfach steuern kann, wieviele Threads (min,max,etc) wann und wie lange existieren sollen. Die verschiedenen Aufgaben übergebe ich an den Thread Pool als Callables in einer Warteschlange. Das funktioniert auch alles ganz gut. Die Callables werden durchlaufen und ich erhalte das Ergebis wie gewünscht zurück.
Für die Abarbeitung des Callable-Objektes benötige ich eine Verbindung zu einem externen System. Wenn ich nun in meinem Thread-Pool 10 Threads habe und 100 Callable abarbeiten möchte, würde dies zu 100 Verbindungsoperationen (öffnen/schließen) führen.
Besser wäre, wenn die Verbindung im Thread hergestellt würde und das Callable diese nutzen kann. Dadurch bräuchte ich ingesamt nur 10 mal eine Verbindung (also je Thread) herstellen.
Wie kann nun das Callable auf den Thread bzw. auf dessen Verbindungsinformationen zugreifen? Eine spezielle Thread-Klasse kann ich ja mittels ThreadFactory dem Pool Creator übergeben. Allerdings gibt es im Thread ja nur Runnables und keine Callables.
Wenn ich das Callable erstelle, gibt es den Thread ja auch noch nicht.
Hat jemand eine Idee?
Gruß Tim