日期:2014-05-20  浏览次数:20726 次

[求助]这个程序的结果没有变化吗?
我的疑问时start()方法开始后,会不会main方法先执行一会儿呢!再读到join(),让自定义线程先执行完,再继续执行main。
但是每次都是先执行自定义线程,再执行main。有些不解!
Java code

package com.justdoit.thread;

public class TestJoin {
    public static void main(String[] args) {
        MyThread2 my = new MyThread2("MyThread2");
        my.start();
        try {
            my.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        for(int i=0;i<=10;i++){
            System.out.println(i+Thread.currentThread().getName());
        }
    }
}    

class MyThread2 extends Thread{
    MyThread2(String name){
        super(name);
    }
    
    public void run(){
        for(int i=0;i<=10;i++){
            System.out.println(i+Thread.currentThread().getName());
            try {
                sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }
}



------解决方案--------------------
当然不会啊,join()---等待该线程终止
终止了才继续啊,就像加了一些代码在那里一样,顺序执行。