public class JoinThread extends Thread{ public JoinThread(String name){ super(name); } public void run(){ for(int i = 0; i < 10; i++){ for(long k = 0; k < 100000000; k++){} System.out.println(this.getName() + ":"+i); } } public static void main(String[] args){ Thread t1 = new JoinThread("Jimwind G"); t1.start(); try{ //t1.join(1000); t1.join(); //Thread.sleep(1000); } catch(InterruptedException e){ e.printStackTrace(); } System.out.println("over"); } }
首先明確,main是主線程,main函數中又啓動了一個線程JoinThread
解釋join:在當前線程main中,加入t1線程,若是調用t1.join(),則中止當前的main線程,直到t1運行完畢才繼續運行main線程。
另外,若是t1.join中指定了參數,則當前main線程只會中止其指定的時間,但若是t1還不到指定時間就運行結束,則main線程會立刻進入可運行狀態,這就跟Sleep的功能有區別了。
參考:http://lavasoft.blog.51cto.com/62575/99153 join相關