【发布时间】:2015-08-13 16:35:48
【问题描述】:
错误:从内部类中访问局部变量 t 需要声明为 final 并且从类中访问局部变量 t1。与 t1.start() 相同;为什么我需要将它们声明为最终的?
public class sync {
public int count = 0;
public static void main(String args[]) {
sync obj = new sync();
obj.dowork();
sync obj1 = new sync();
obj1.dowork1();
System.out.println(count);
}
public void dowork() {
Thread t = new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 1000; i++) {
count++;
}
t.start();
}
});
}
public void dowork1() {
Thread t1 = new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 1000; i++) {
count++;
}
t1.start();
}
});
}
}
【问题讨论】:
-
您的方法声明中有一个错误的分号:
public static void main(String args[]);{。之后,缺少分号来终止您初始化obj变量的行:sync obj = new sync()。 -
我打错了它不在实际程序中。我编辑了上面的代码
-
如果您使用实际代码,或者至少是可以编译和运行的代码,将会有所帮助。事实上,很难说出你想用这段代码做什么。最后几行也断了。
标签: java multithreading