可能的重複:need-help-returning-object-in-thread-run-method如何通過線程訪問Runnable對象?
你好。我有一個實現runnable的類,我有一個List,存儲使用該類的不同對象實例化的Threads。如何在給定線程對象運行的情況下訪問底層對象的屬性?這裏是一個例子:
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?
}
}
除了沒有真正被肯定你有什麼想法,我想你會需要這種反思,也要確保你的方式沒有安全管理員。 但是,也許你可以更詳細地描述你試圖達到的目標。 – 2010-02-20 00:50:02
我相信你可以繼承'Thread'本身並覆蓋'Thread.run()'而不是傳遞'Runnable'。那麼'foo'就是'Thread'的一個屬性。 – MatrixFrog 2010-02-20 00:52:58
@MatrixFrog:如果Runnable類需要繼承其他類,這是不好的,因爲Java只允許單一繼承。據我所知,java.lang.Runnable的主要目的是通過允許使用Thread(java.lang.Runnable)將線程功能添加到已經具有其他子類的類來解決此問題。 – 2010-02-20 00:56:05