對Join的理解

mouqj發表於2007-09-01
線上程中,Join用於等待一個執行緒的結束。從執行緒排程的角度來說,就是把呼叫該方法的當前程式置於執行緒鏈頂端,當前程式執行結束,其餘程式開始執行。
Join是同步執行緒的一種方法,另種方法是wait()以及notify().
以下舉一個例子說明Join的作用。

class ThreadJoinTest {

public static void main(String[] args) throws InterruptedException{
TestTmp test1 = new TestTmp();
TestTmp test2 = new TestTmp();
TestTmp test3 = new TestTmp();

test1.join(); // join
test2.join(); // join

test1.start();
test2.start();
test3.start();
}
}

class TestTmp extends Thread{
public void run(){
for(int i=0;i<5;i++)
System.out.println(this.getName()+" "+i);
}
}

注意加註釋的兩行程式碼,test1.join()以及test2.join().

此時程式的輸出為:

Thread-1 0

Thread-1 1

Thread-1 2

Thread-1 3

Thread-1 4

Thread-2 0

Thread-2 1

Thread-2 2

Thread-2 3

Thread-3 0

Thread-2 4

Thread-3 1

Thread-3 2

Thread-3 3

Thread-3 4

如果將註釋的兩行去掉,則一種可能的輸出為:

Thread-1 0

Thread-1 1

Thread-1 2

Thread-1 3

Thread-1 4

Thread-2 0

Thread-2 1

Thread-2 2

Thread-2 3

Thread-3 0

Thread-3 1

Thread-3 2

Thread-3 3

Thread-3 4

Thread-2 4

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11049438/viewspace-967511/,如需轉載,請註明出處,否則將追究法律責任。

相關文章