package test1;public class JoinThread { /**
 * @param args
 */
public static void main(String[] args) {
// TODO 自动生成方法存根 ThreadTest2 t=new ThreadTest2();
Thread pp=new Thread(t);
pp.start();
int i=0;
while(true){
if(i==100){
try{
pp.join();
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
System.out.println("main Thread "+i++);
}
}}class ThreadTest2 implements Runnable{
public void run(){
// String str=new String();
int j=0;
while(true)
System.out.println(Thread.currentThread().getName()+" "+j++);
}
}
但是运行结果就是不对如下
Thread-0 78084
Thread-0 78085
Thread-0 78086
Thread-0 78087
Thread-0 78088
Thread-0 78089
Thread-0 78090
Thread-0 78091
Thread-0 78092
Thread-0 78093
Thread-0 78094
Thread-0 78095
Thread-0 78096
Thread-0 78097
Thread-0 78098
Thread-0 78099
Thread-0 78100
Thread-0 78101
Thread-0 78102
Thread-0 78103
Thread-0 78104
Thread-0 78105
Thread-0 78106
Thread-0 78107
Thread-0 78108
Thread-0 78109
Thread-0 78110
Thread-0 78111
Thread-0 78112
Thread-0 78113
Thread-0 78114
Thread-0 78115
Thread-0 78116
.......

解决方案 »

  1.   

    int i=0;
    while(true){
    if(i==100){
    try{
    pp.join();
    } 请问,啥时候i会等于100呢?从来不会吧,他永远等于0你是不是少写了i++了!
      

  2.   

    我写了啊  System.out.println("main Thread "+i++);
    还有他怎么会出现78084等这么大的数呢
      

  3.   

    你那个while(true)里面是个死循环啊,i值就一直加 
      

  4.   

    为什么不应该出现?结果和程序应该是符合的···
    join() 方法  阻塞当前线程(你的例子当前线程是main线程),直到另一线程(你的例子中指的是pp)终止时再执行。你的PP线程一直在跑··的