在学习线程时,遇到一个问题:
为什么注释处写在上面和删除掉会影响程序显示结果?请高手帮助回答下,先谢了。
代码如下:class ThreadLife
{
public static void main(String [] args)
{
ThreadTest tt=new ThreadTest();
new Thread(tt).start();
for (int i=1;i<=50;i++)
{
if(i==25)
{
tt.b=false;
}
system.out.println("main Thread");//此处为什么会影响编程结果
}
}
}class ThreadTest implements Runnable
{
boolean b=true;
public void run()
{

while (b)
{
System.out.println(Thread.currentThread().getName());
}
}
}

解决方案 »

  1.   

    system.out.println("main Thread");//此处为什么会影响编程结果
    system小写了,应该大写
      

  2.   

    System.out属于i/o操作你承认吧?
    i/o操作要比cpu工作速度慢很多你承认吧?
    因为运行速率的问题,所以输出会不一样。
      

  3.   

    system是笔误,不好意思 
    无注释这句时,什么都不会打印出来; 
    有注释这句时,会出现主线程和ThreadTest线程轮流执行的结果(这种情况是正常的,就是想知道为什么无注释这句时,什么都不会打印出来?) 
    如下: 
    main Thread 
    main Thread 
    main Thread 
    Thread-0 
    Thread-0 
    Thread-0 
    Thread-0 
    Thread-0 
    Thread-0 
    Thread-0 
    Thread-0 
    Thread-0 
    main Thread
      

  4.   

    已经搞清楚了,谢谢java1978
    解答如下:
    执行时间的问题,你没有加(system.out.println("main Thread");//此处为什么会影响编程结果 )这行代码时,程序很快就执行完了,根本没有时间去运行public void run() 
    你加了system.out.println("main Thread");打印,延迟了程序执行时间,所以public void run() 
    得到执行了.你看到了打印结果 
    你把代码做如下修改 
    for (int i=1;i <=500000000;i++) 
            { 
                if(i==25000000) 
                { 
                    tt.b=false; 
                } 
              // System.out.println("main Thread");//此处为什么会影响编程结果 
            } 
    就能看到打印的 
    Thread-0 
    Thread-0 
    Thread-0 
    Thread-0 
    Thread-0