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

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

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

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

復制代碼 代碼如下:

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);  // 為了使運行結果更隨機,延遲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值應該是1000。
1.  測試1
使用如下的命令運行上面程序:

復制代碼 代碼如下:

java mythread.JoinThread

程序的運行結果如下:
復制代碼 代碼如下:

n=442

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

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

復制代碼 代碼如下:

n=1000

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

相關文章

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

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

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

    Spring?AOP操作的相關術語及環(huán)境準備

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

    Java構造方法有什么作用?

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

    Spring Security的簡單使用

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

    Hutool?Java工具類庫_ExcelUtil的使用

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

    java IO 文件操作方法總結

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

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

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

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

    這篇文章主要介紹了SpringBoot 導出數(shù)據生成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)定時任務,需要的朋友可以參考下
    2023-04-04

最新評論

罗甸县| 卢湾区| 邻水| 长葛市| 宝鸡市| 改则县| 沙湾县| 沁源县| 明光市| 嘉定区| 西青区| 金沙县| 封丘县| 东乌珠穆沁旗| 保德县| 武义县| 大同县| 阿图什市| 霍州市| 德格县| 无棣县| 娱乐| 和田县| 宣恩县| 峨眉山市| 青冈县| 江华| 济南市| 宁河县| 武平县| 丹凤县| 永顺县| 游戏| 社旗县| 汉沽区| 丰城市| 梓潼县| 区。| 大田县| 安岳县| 华池县|