我联系多线程,敲了下面的代码,为啥输出结果不一样。
package test.thread;
/**
- @author 尉文涛
-
@date:2010-3-10上午09:58:01
*/
public class ThreadTest1 {public static void main(String[] args) throws Exception {
int i=0;
Hello t=new Hello();
t.start();while(true){ System.out.println("Good morning"+i++); if(i==2&&t.isAlive()){ System.out.println("Main waiting for Hello"); t.join(); } if(i==5) break; }
}
}
class Hello extends Thread{
int i;
public void run(){
while(true){
System.out.println("Hello"+i++);
if(i==5) break;
}
}
}
第一次执行结果为下:Good morning0
Good morning1
Main waiting for Hello
Hello0
Hello1
Hello2
Hello3
Hello4
Good morning2
Good morning3
Good morning4
第二次执行结果为:
Hello0
Hello1
Hello2
Hello3
Hello4
Good morning0
Good morning1
Good morning2
Good morning3
Good morning4
不明白,各位帮忙说一下原因?