2010-12-21 3 views
0

Ich habe eine Klasse, MyThread, die Callable <String> implementiert. Die Klasse hat einen Konstruktor, der Parameter wie eine blockierende Warteschlange und andere akzeptiert. In meiner Hauptklasse instanziiere ich diese Klasse MyThread mit einer neuen blockierenden Warteschlange und anderen Parametern. Außerdem verwalte ich zwei Karten, eine, um die MyThread-Referenz mit einem eindeutigen Parameter als Schlüssel zu halten, und andere, um die Warteschlangenreferenz mit dem gleichen eindeutigen Schlüssel zu blockieren.ThreadLocal - Ist es erforderlich, wenn wir den Wert im Konstruktor setzen?

Während des Prozesses, bekomme ich diese Blockierungswarteschlange von der Hashmap, füge meine benutzerdefinierte Nachricht hinzu und nehme die entsprechende MyThread-Instanz und sende sie an ThreadPoolTaskExecutor (Spring-Version).

Soweit ich verstehe, sollte jeder Thread seine eigene Kopie der Werte erhalten (wie blockierende Warteschlange usw.), wie sie während der Konstruktion übergeben und einen Thread später mit ThreadPoolTaskExecutor.submit (myThreadObj) erstellen. Ich habe mich nur gefragt, ob jemand bestätigen könnte, ob das stimmt ODER ob ich ThreadLocal in diesem Szenario verwenden muss. Bisher habe ich bei den Tests kein Problem festgestellt, aber dann muss ich noch den Belastungstest machen.

Vielen Dank im Voraus.

Antwort

6

Sie haben ThreadLocal effektiv neu erfunden. Genießen!

Verwandte Themen