public static void main(String args[]) {
final Outputter outputter = new Outputter(); new Thread() {
public void run() {
outputter.output("zhangsan"); }
}.start();
为什么实例化Outputter时,需要定义为final,要不就报错。
final Outputter outputter = new Outputter(); new Thread() {
public void run() {
outputter.output("zhangsan"); }
}.start();
为什么实例化Outputter时,需要定义为final,要不就报错。
要么你就写一个Thread的子类,加上这个属性,创建对象的时候把outputter给它传进去。
这种写法是没问题的。但
public class TraditionalThreadSynchronized { public static void main(String args[]) {
static Outputter outputter = new Outputter();
}
}是不容许的。
对象不能定义为局部静态?
public static void main(String args[]) {
new Thread() {
public void run() {
Outputter.outputter.output("zhangsan"); }
}.start();
}
}class Outputter {
public static Outputter outputter = new Outputter(); public void output(String str) {
// TODO
}
}
public void run() {
outputter.output("zhangsan");}
}.start();
这是内部类,你的outputter是局部变量,它的生命周期只是这个方法中,但是这个内部类的生命周期就不是这个方法中了,所以你不可以直接使用,必须声明为final
你要把他变成instance field也能调用。