RanuXD
2019-05-27 10:47
采纳率: 0%
浏览 1.4k

关于Java的线程run方法中为全局变量的赋值问题

为什么在run()方法里为sa赋值,在main方法里执行start()后sa没有+1,
其次为什么sName一开始也没变输出结果是“vandeleur”,而在输出t.sa的时候sName却变为“vandeleur 0 1 2 3”

public class Tux extends Thread {
     static String sName = "vandeleur";
     int sa=33;


    public void run() {
        for (int i = 0; i < 4; i++) {
            sName = sName + " " + i;
        }

        sa+=1;
    }

    public static void main(String argv[]) {
        Tux t = new Tux();
        t.start();
        //System.out.println(t.sa); //如果这条注释后则sName为vandeleur
        System.out.println(sName);
    }

}

注释掉System.out.println(t.sa);的运行结果为:
vandeleur

去掉注释System.out.println(t.sa);的运行结果为:
33
vandeleur 0 1 2 3

3条回答 默认 最新

相关推荐 更多相似问题