熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

Java多線程初學者指南(5):join方法的使用

2022-06-13   來源: Java高級技術 

  在上面的例子中多次使用到了Thread類的join方法我想大家可能已經猜出來join方法的功能是什麼了join方法的功能就是使異步執行的線程變成同步執行也就是說當調用線程實例的start方法後這個方法會立即返回如果在調用start方法後後需要使用一個由這個線程計算得到的值就必須使用join方法如果不使用join方法就不能保證當執行到start方法後面的某條語句時這個線程一定會執行完而使用join方法後直到這個線程退出程序才會往下執行下面的代碼演示了join的用法

   package mythread;

public class JoinThread extends Thread
{
    public static volatile int n = ;

    public void run()
    {
        for (int i = ; i < ; i++ n++)
            try
            {
                sleep();  // 為了使運行結果更隨機延遲毫秒
            }
            catch (Exception e)
            {
            }                                      
    }
    public static void main(String[] args) throws Exception
    {
        Thread threads[] = new Thread[];
        for (int i = ; i < threadslength; i++)  // 建立個線程
            threads[i] = new JoinThread();
        for (int i = ; i < threadslength; i++)   // 運行剛才建立的個線程
            threads[i]start();
        if (argslength > )  
            for (int i = ; i < threadslength; i++)   // 個線程都執行完後繼續
                threads[i]join();
        Systemoutprintln(n= + JoinThreadn);
    }
}

  在例程中建立了個線程每個線程使靜態變量n增加如果在這個線程都執行完後輸出n這個n值應該是

    測試

  使用如下的命令運行上面程序

   java mythreadJoinThread

  程序的運行結果如下

   n=

  這個運行結果可能在不同的運行環境下有一些差異但一般n不會等於從上面的結果可以肯定個線程並未都執行完就將n輸出了

    測試

  使用如下的命令運行上面的代碼

  在上面的命令行中有一個參數join其實在命令行中可以使用任何參數只要有一個參數就可以這裡使用join只是為了表明要使用join方法使這個線程同步執行

  程序的運行結果如下

   n=

  無論在什麼樣的運行環境下運行上面的命令都會得到相同的結果n=這充分說明了這個線程肯定是都執行完了因此n一定會等於


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27479.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.