亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java線程之join方法的使用介紹

 更新時間:2013年05月02日 16:10:32   作者:  
本篇文章介紹了,java線程之join方法的使用分析,需要的朋友參考下

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

復制代碼 代碼如下:

package mythread;

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

     public void run()
     {
         for (int i = 0; i < 10; i++, n++)
             try
             {
                 sleep(3);  // 為了使運行結(jié)果更隨機,延遲3毫秒
             }
             catch (Exception e)
             {
             }                                     
     }
     public static void main(String[] args) throws Exception
     {
         Thread threads[] = new Thread[100];
         for (int i = 0; i < threads.length; i++)  // 建立100個線程
             threads[i] = new JoinThread();
         for (int i = 0; i < threads.length; i++)   // 運行剛才建立的100個線程
             threads[i].start();
         if (args.length > 0) 
             for (int i = 0; i < threads.length; i++)   // 100個線程都執(zhí)行完后繼續(xù)
                 threads[i].join();
         System.out.println("n=" + JoinThread.n);
     }
 }

在例程2-8中建立了100個線程,每個線程使靜態(tài)變量n增加10.如果在這100個線程都執(zhí)行完后輸出n,這個n值應(yīng)該是1000.

    1.  測試1

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

復制代碼 代碼如下:

1 java mythread.JoinThread

程序的運行結(jié)果如下:
復制代碼 代碼如下:

1 n=442

這個運行結(jié)果可能在不同的運行環(huán)境下有一些差異,但一般n不會等于1000.從上面的結(jié)果可以肯定,這100個線程并未都執(zhí)行完就將n輸出了。

    2.  測試2

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

    在上面的命令行中有一個參數(shù)join,其實在命令行中可以使用任何參數(shù),只要有一個參數(shù)就可以,這里使用join,只是為了表明要使用join方法使這100個線程同步執(zhí)行。

    程序的運行結(jié)果如下:

復制代碼 代碼如下:

1 n=1000

無論在什么樣的運行環(huán)境下運行上面的命令,都會得到相同的結(jié)果:n=1000.這充分說明了這100個線程肯定是都執(zhí)行完了,因此,n一定會等于1000。

相關(guān)文章

  • springcloud?nacos動態(tài)線程池Dynamic?tp配置接入實戰(zhàn)詳解

    springcloud?nacos動態(tài)線程池Dynamic?tp配置接入實戰(zhàn)詳解

    這篇文章主要為大家介紹了springcloud?nacos動態(tài)線程池Dynamic?tp配置接入實戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Spring Boot整合Web項目常用功能詳解

    Spring Boot整合Web項目常用功能詳解

    這篇文章主要介紹了Spring Boot整合Web項目常用功能詳解,在Web應(yīng)用開發(fā)過程中,可以通過Spring Boot的Starter來將這些常用功能進行整合與集中維護,以達到開箱即用的目的。,需要的朋友可以參考下
    2019-06-06
  • 教你在?Java?中實現(xiàn)?Dijkstra?最短路算法的方法

    教你在?Java?中實現(xiàn)?Dijkstra?最短路算法的方法

    這篇文章主要教你在?Java?中實現(xiàn)?Dijkstra?最短路算法的方法,在實現(xiàn)最短路算法之前需要先實現(xiàn)帶權(quán)有向圖,文章中給大家介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • springBoot mybatis 包掃描實例

    springBoot mybatis 包掃描實例

    這篇文章主要介紹了springBoot mybatis 包掃描實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring Boot + Vue 前后端分離項目如何踢掉已登錄用戶

    Spring Boot + Vue 前后端分離項目如何踢掉已登錄用戶

    這篇文章主要介紹了Spring Boot + Vue 前后端分離項目如何踢掉已登錄用戶,需要的朋友可以參考下
    2020-05-05
  • 電腦上安裝多個JDK版本時該如何自由切換(詳細圖文)

    電腦上安裝多個JDK版本時該如何自由切換(詳細圖文)

    我們在學習的過程中經(jīng)常用到不同的jdk版本,那么如何在一臺電腦上同時安裝多個jdk版本并進行切換呢,這篇文章主要給大家介紹了關(guān)于電腦上安裝多個JDK版本時該如何自由切換的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • idea聚合工程搭建過程詳解

    idea聚合工程搭建過程詳解

    本章主要以order訂單服務(wù)來遠程調(diào)用payment支付服務(wù)為例,當然這里只是簡單的一個遠程調(diào)用,沒有太復雜的邏輯,重點是要掌握的是maven的聚合工程搭建,微服務(wù)分模塊的思想,每一個步驟我都會詳細記錄,并且文章下方還提供了git源碼地址
    2022-06-06
  • HashMap 和 HashSet的區(qū)別

    HashMap 和 HashSet的區(qū)別

    本文主要介紹HashMap 和 HashSet的區(qū)別,這里整理了詳細的資料來說名兩者的區(qū)別,并說明如何使用該方法,有需要的小伙伴可以參考下
    2016-09-09
  • IDEA?下?Gradle?刪除多余無用依賴的處理方法

    IDEA?下?Gradle?刪除多余無用依賴的處理方法

    這篇文章主要介紹了IDEA下Gradle刪除多余無用依賴,使用該插件可以一定程度上幫助我們刪除無用依賴,但是也可能會多刪除有用的依賴,需要在使用插件自動修復后手動檢測項目,驗證是否會出現(xiàn)問題,避免導致上線發(fā)布錯誤的負優(yōu)化
    2022-03-03
  • 利用Java實現(xiàn)帶GUI的氣泡詩詞特效

    利用Java實現(xiàn)帶GUI的氣泡詩詞特效

    這篇文章主要為大家介紹了如何利用Java語言實現(xiàn)帶GUI的氣泡詩詞特效,文中的示例代碼講解詳細,對我們學習Java有一定幫助,感興趣的可以了解一下
    2022-08-08

最新評論