深入淺出Java多線程(1)-方法join

字號:

對于Java開發(fā)人員,多線程應該是必須熟練應用的知識點,特別是開發(fā)基于Java語言的產品。本文將深入淺出的表述Java多線程的知識點,在后續(xù)的系列里將側重于Java5由Doug Lea教授提供的Concurrent并行包的設計思想以及具體實現與應用。
    如何才能深入淺出呢,我的理解是帶著問題,而不是泛泛的看。所以該系列基本以解決問題為主,當然我也非常希望讀者能夠提出更好的解決問題的方案以及提出更多的問題。由于水平有限,如果有什么錯誤之處,請大家提出,共同討論,總之,我希望通過該系列我們能夠深入理解Java多線程來解決我們實際開發(fā)的問題。
    作為開發(fā)人員,我想沒有必要討論多線程的基礎知識,比如什么是線程? 如何創(chuàng)建等 ,這些知識點是可以通過書本和Google獲得的。本系列主要是如何理深入解多線程來幫助我們平時的開發(fā),比如線程池如何實現? 如何應用鎖等。
    (1)方法Join是干啥用的? 簡單回答,同步,如何同步? 怎么實現的? 下面將逐個回答。
    自從接觸Java多線程,一直對Join理解不了。JDK是這樣說的:join public final void join(long millis)throws InterruptedException Waits at most millis milliseconds for this thread to die. A timeout of 0 means to wait forever.大家能理解嗎? 字面意思是等待一段時間直到這個線程死亡,我的疑問是那個線程,是它本身的線程還是調用它的線程的,上代碼:
    Code highlighting produced by Actipro CodeHighlighter (freeware)
    http://www.CodeHighlighter.com/
    -->package concurrentstudy;
    /**
    *
    * @author vma
    */
    public class JoinTest {
    public static void main(String[] args) {
    Thread t = new Thread(new RunnableImpl());
    t.start();
    try {
     t.join(1000);
     System.out.println("joinFinish");
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    }
    }