0Because:
public static int aa = 0;

解决方案 »

  1.   

    在另外一个线程修改aa,不会影响到本线程的aa
      

  2.   

    因为你主程序中有两个线程并发执行(主程序线程和线程t), 
    在语句t.start()执行后, 语句aa = aa + 1和System.out.println(aa)同时执行, 
    但由于计算机的速度很快, aa变量还没来得及完成加1, 而System.out.println(aa)
    已经执行了. 所以结果有可能是0~5中的任何一个数.
    但是你只要让主程序等待, 使线程t有足够的时间运行,那么得到的结果一定是5.下面对程序稍做修改, 其执行结果一定是5.public class a implements Runnable
    {
    public static int aa = 0;
    public void run()
    {
    for(int k=0;k<5;k++)
    {
    aa = aa + 1;
    }
    }
    public static void main(String[] args)
    {
    Runnable r = new a();
    Thread t = new Thread(r);
    t.start();
    try
    {
    Thread.sleep(1000);
                                   //让主程序睡眠1秒钟, 以便让线程t有足够的时间运行.
    }
    catch(Exception e)
    {}
    System.out.println(aa);
    }
    }
      

  3.   

    我看错了,没注意是static,sorry.