Mögliches Duplikat: need-help-returning-object-in-thread-run-methodZugriff auf ein ausführbares Objekt per Thread?
Hallo. Ich habe eine Klasse, die runnable implementiert und ich habe eine Liste, die Threads speichert, die mit verschiedenen Objekten dieser Klasse instanziiert sind. Wie kann ich auf Eigenschaften von zugrunde liegenden Objekten zugreifen, wenn das Thread-Objekt sie ausführt? Hier ein Beispiel:
public class SO {
public static class TestRunnable implements Runnable {
public String foo = "hello";
public void run() {
foo = "world";
}
}
public static void main(String[] args) {
Thread t = new Thread(new TestRunnable());
t.start();
//How can I get the value of `foo` here?
}
}
Abgesehen von nicht wirklich sicher zu sein, was Sie im Kopf haben, ich glaube, Sie Reflexion für diese benötigen, und Stellen Sie außerdem sicher, dass kein Sicherheitsmanager auf Ihrem Weg ist. Vielleicht könnten Sie jedoch detaillierter beschreiben, was Sie erreichen möchten. –
Ich glaube, Sie können 'Thread' selbst ableiten und' Thread.run() 'außer Kraft setzen, anstatt ein' Runnable' zu übergeben. Dann wäre 'foo' nur ein Attribut des' Threads'. – MatrixFrog
@MatrixFrog: Dies ist nicht gut, wenn die Runnable-Klasse etwas anderes unterklassifizieren muss, da Java nur eine einzige Vererbung zulässt. Der Hauptzweck von java.lang.Runnable, so weit ich das beurteilen kann, besteht darin, dieses Problem zu umgehen, indem Sie Thread (java.lang.Runnable) zum Hinzufügen von Thread-Funktionalität zu einer Klasse, die bereits etwas anderes subklassifiziert, verwenden können. –