【发布时间】:2015-02-13 05:26:28
【问题描述】:
我的代码的相关总结是这样的:
public class A {
String aString;
public static void main(String[] args) {
B b = new B();
new Thread(b).start();
}
public static class B implements Runnable {
public void run() {
aString = "foo";
}
}
}
我有几个月的 Java 编码经验,但 thread 和 dynamic 与 static 对我来说还是比较陌生。为了使线程正确执行,B 类必须是静态的,否则只有线程执行,而不是两者都执行。我的目标显然是让线程在后台执行,以便我在 A 类中可能拥有的其他代码可以同时执行。问题是,如果 B 类是静态的,我无法操作字符串 aString,因为我得到了异常 non-static variable aString cannot be referenced from a static context。
我已经查找了这方面的信息,但我没有找到任何与在线程中解决此问题相关的信息。我的问题是,如何在 B 类中操作 aString 并仍然让线程正常工作(两个类都在运行,而不仅仅是 B 类)?
【问题讨论】:
-
static与线程无关。如果没有线程,您将遇到同样的问题。例如,new B().run()。或者,如果您刚刚在main中写了aString = "foo"。
标签: java string multithreading variables static