thread.join()的用法

來源:互聯網
上載者:User

原文:http://www.j2medev.com/bbs/dispbbs.asp?boardid=3&Id=34846

 

 thread.join()應該是讓當前線程block住,等thread執行完之後,再繼續執行

。比如有3個線程在執行計算任務,必須等三個線程都執行完才能匯總,那麼這時候在主線程裡面讓三個線程join,最後計算結果既可。代碼顯示如下。

import
java.util.Random;

public class ThreadTest {

    public static void
main(String[] args) {
        System.out.println("in " +
Thread.currentThread().getName());
        long start =
System.currentTimeMillis();
        CounterThread[] ct = new
CounterThread[3];
        for (int i = 0; i < ct.length; i++) {
       
    ct[i] = new CounterThread();
            ct[i].start();
           
try {
                ct[i].join();
            } catch
(InterruptedException e) {
                e.printStackTrace();
       
    }
        }
        long end = System.currentTimeMillis();
       
System.out.println("join total time = " + (end - start));
        int result
= 0;
        for (int j = 0; j < ct.length; j++) {
            result
+= ct[j].getResult();
        }
        System.out.println("the result is
" + result);

    }

}

class CounterThread extends Thread
{

    public CounterThread() {
    }

    private int
result;

    public int getResult() {
        return result;
   
}

    public void run() {
        try {
            int time = (new
Random().nextInt() >>> 1) % 5000;
           
Thread.sleep(time);
           
System.out.println(Thread.currentThread().getName()
                    + "
is blocked for " + time + "ms");
        } catch (InterruptedException ex)
{

        }
        result = 5;
    }
}

輸出結果:

in
main
Thread-0 is blocked for 205ms
Thread-1 is blocked for
4226ms
Thread-2 is blocked for 4469ms
join total time = 8906
the result
is 15

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.