欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

復(fù)制代碼 代碼如下:

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);  // 為了使運(yùn)行結(jié)果更隨機(jī),延遲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個(gè)線程
             threads[i] = new JoinThread();
         for (int i = 0; i < threads.length; i++)   // 運(yùn)行剛才建立的100個(gè)線程
             threads[i].start();
         if (args.length > 0) 
             for (int i = 0; i < threads.length; i++)   // 100個(gè)線程都執(zhí)行完后繼續(xù)
                 threads[i].join();
         System.out.println("n=" + JoinThread.n);
     }
 }

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

    1.  測(cè)試1

    使用如下的命令運(yùn)行上面程序:

復(fù)制代碼 代碼如下:

1 java mythread.JoinThread

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

1 n=442

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

    2.  測(cè)試2

    使用如下的命令運(yùn)行上面的代碼:

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

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

復(fù)制代碼 代碼如下:

1 n=1000

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

相關(guān)文章

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

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

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

    Spring Boot整合Web項(xiàng)目常用功能詳解

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

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

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

    springBoot mybatis 包掃描實(shí)例

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

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

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

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

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

    idea聚合工程搭建過程詳解

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

    HashMap 和 HashSet的區(qū)別

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

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

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

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

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

最新評(píng)論