最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java多線程編程之join方法的使用示例

 更新時間:2014年01月23日 14:39:08   作者:  
join方法的功能就是使異步執(zhí)行的線程變成同步執(zhí)行。也就是說,當(dāng)調(diào)用線程實例的start方法后,這個方法會立即返回,如果在調(diào)用start方法后后需要使用一個由這個線程計算得到的值,就必須使用join方法

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

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

package mythread;

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

static synchronized void inc()
{
n++;
}
public void run()
{
for (int i = 0; i < 10; i++)
try
{
inc();
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
使用如下的命令運行上面程序:

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

java mythread.JoinThread

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

n=442

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

2.  測試2
使用如下的命令運行上面的代碼:
在上面的命令行中有一個參數(shù)join,其實在命令行中可以使用任何參數(shù),只要有一個參數(shù)就可以,這里使用join,只是為了表明要使用join方法使這100個線程同步執(zhí)行。
程序的運行結(jié)果如下:

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

n=1000

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

相關(guān)文章

  • Java中HashMap和Hashtable及HashSet的區(qū)別

    Java中HashMap和Hashtable及HashSet的區(qū)別

    以下是對Java中HashMap和Hashtable及HashSet的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • Spring?AOP操作的相關(guān)術(shù)語及環(huán)境準(zhǔn)備

    Spring?AOP操作的相關(guān)術(shù)語及環(huán)境準(zhǔn)備

    這篇文章主要為大家介紹了Spring?AOP操作的相關(guān)術(shù)語及環(huán)境準(zhǔn)備學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Java構(gòu)造方法有什么作用?

    Java構(gòu)造方法有什么作用?

    在本篇文章里小編給大家介紹了關(guān)于Java構(gòu)造方法的作用以及相關(guān)的基礎(chǔ)知識點,對此有需要的朋友們可以跟著學(xué)習(xí)下。
    2022-11-11
  • Spring Security的簡單使用

    Spring Security的簡單使用

    這篇文章主要介紹了Spring Security的簡單使用,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot,感興趣的朋友可以了解下
    2021-04-04
  • Hutool?Java工具類庫_ExcelUtil的使用

    Hutool?Java工具類庫_ExcelUtil的使用

    這篇文章主要介紹了Hutool?Java工具類庫_ExcelUtil的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java IO 文件操作方法總結(jié)

    java IO 文件操作方法總結(jié)

    這篇文章主要介紹了java IO 文件操作方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • springboot內(nèi)置的tomcat支持最大的并發(fā)量問題

    springboot內(nèi)置的tomcat支持最大的并發(fā)量問題

    這篇文章主要介紹了springboot內(nèi)置的tomcat支持最大的并發(fā)量問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • SpringBoot 導(dǎo)出數(shù)據(jù)生成excel文件返回方式

    SpringBoot 導(dǎo)出數(shù)據(jù)生成excel文件返回方式

    這篇文章主要介紹了SpringBoot 導(dǎo)出數(shù)據(jù)生成excel文件返回方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 詳解SpringCloud LoadBalancer 新一代負載均衡器

    詳解SpringCloud LoadBalancer 新一代負載均衡器

    這篇文章主要為大家介紹了SpringCloud LoadBalancer新一代負載均衡器詳解使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • RabbitMQ延時隊列詳解與Java代碼實現(xiàn)

    RabbitMQ延時隊列詳解與Java代碼實現(xiàn)

    這篇文章主要介紹了RabbitMQ延時隊列詳解與Java代碼實現(xiàn),RabbitMQ 延時隊列是指消息在發(fā)送到隊列后,并不立即被消費者消費,而是等待一段時間后再被消費者消費。這種隊列通常用于實現(xiàn)定時任務(wù),需要的朋友可以參考下
    2023-04-04

最新評論

松滋市| 洞头县| 井研县| 招远市| 靖边县| 滦南县| 云霄县| 长泰县| 灵石县| 尚义县| 武川县| 东乌珠穆沁旗| 南澳县| 永川市| 灵川县| 四川省| 广州市| 内乡县| 泰州市| 南皮县| 格尔木市| 巩留县| 华蓥市| 许昌市| 乌兰察布市| 江源县| 裕民县| 东海县| 延安市| 新泰市| 无极县| 图木舒克市| 青川县| 柏乡县| 富锦市| 勐海县| 闽清县| 墨脱县| 福州市| 九江市| 永德县|