Wir für eine Bibliothek/Funktionalität in Java (in einem Federrahmenkontext) suchen Referenzen zwischen Threads vorbei:Java Shared Referenzen zwischen Threads
//ParentThread:
XXX.putSharedObject("lock", childLock);
XXX.putSharedObject("someKey", someObjectInstance);
for(i=0;i<X;i++) { taskExecutor.execute(context.getBean("childClass")); }
childLock.wait(xxx);
//ChildThread:
YY = XXX.getSharedObject("someKey");
YY.someFunction();
...some work...
XXX.getSharedObject("lock").notify();
so dass jede Referenz durch ein Gewinde in XXX gesetzt (ParentThread) wird nur für "ParentThread" und alle untergeordneten Elemente verfügbar sein, aber nicht für andere ParentThreads oder deren untergeordnete Elemente.
Ist das möglich? (Ich glaube, seine Art, wie Mapped Diagnostic Context Arbeit in Logging Frameworks)
Dank
Mit meiner besten Fähigkeit, Ihre Frage zu parsen, ich glaube, Sie könnten für suchen [ 'java.lang.ThreadLocal'] (https: //docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html) –
Ist das nicht pro Thread selbst? Dh kann die von 'ParentThread' definierte ThreadLocal-Variable von 'ChildThread' aufgerufen werden, ohne sie jedes Mal im Konstruktor zu übergeben? (In diesem Fall eine Bean aus dem Spring-Kontext holen und einen 'Setter' für alle Referenzen aufrufen?) –
Offenbar gibt es eine ['java.lang.InheritableThreadLocal'] (https://docs.oracle.com/javase/ 7/docs/api/java/lang/InheritableThreadLocal.html). –