线程说明

时间:2013-09-25 01:49:53

标签: java multithreading

我有以下Java程序:

public class A extends Thread {
    int count;

    @Override
    public void run() {
        while (true)
            count++;
    }

    public static void main(String...strings){
        A obj = new A();
        obj.start();
        System.out.println("The value of count is " + obj.count);
    }
}

运行此程序时,输出为:The value of count is 0(并且程序保持运行)。至于我对线程的理解,它应该在一个无限循环中运行,永远不会打印0.任何人都可以帮助我理解这个程序的本质。

3 个答案:

答案 0 :(得分:4)

线程在System.out.println运行的同时启动,并且由于线程是后台,println不会等待它运行,因此您将看到count的初始值。

另外,count变量应该声明为volatile,以确保主线程sees changes to the variable在循环线程中生成。

答案 1 :(得分:1)

“线程”没有打印,你的主要是。你期待发生什么?

您还应该使用某种保护,这样两个线程都可以安全地访问变量。

答案 2 :(得分:0)

System.out调用不会只运行一次吗?

我会将System.out.println调用放在while循环中。

count使用getter / setter方法可能更好,并确保在任何给定时间只有一个或另一个可以访问该变量。