【发布时间】:2011-01-19 00:36:01
【问题描述】:
可能重复:need-help-returning-object-in-thread-run-method
你好。我有一个实现可运行的类,我有一个列表,存储用该类的不同对象实例化的线程。给定运行它们的线程对象,我如何访问底层对象的属性?这是一个例子:
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?
}
}
【问题讨论】:
-
除了不确定您的想法之外,我认为您需要对此进行反思,并确保您的方式没有安全管理器。但是,也许您可以更详细地描述您想要实现的目标。
-
我相信你可以继承
Thread本身并覆盖Thread.run()而不是传递Runnable。那么foo将只是Thread的一个属性。 -
@MatrixFrog:如果 Runnable 类需要子类化其他东西,这是不好的,因为 Java 只允许单继承。据我所知,java.lang.Runnable 的主要目的是通过允许您使用 Thread(java.lang.Runnable) 将线程功能添加到已经继承了其他东西的类来解决这个问题。
-
老实说,我想不出您想要这样做的任何可能原因。也许你应该问一个不同的问题?
标签: java multithreading concurrency