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

Java父線程(或是主線程)等待所有子線程退出的實(shí)例

 更新時(shí)間:2017年11月24日 09:12:00   作者:牛孝祖  
下面小編就為大家分享一篇Java父線程(或是主線程)等待所有子線程退出的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助

實(shí)例如下:

static void testLock1(){
   
   final AtomicInteger waitCount = new AtomicInteger(30000);
   final Object waitObj = new Object();
   System.out.println("start"+System.currentTimeMillis());
   for (int i=0;i<30000;i++) {
    new Thread(new Runnable() {
     @Override
     public void run() {
      try {
       Thread.sleep(10);
      } catch (InterruptedException e) {
       e.printStackTrace();
      }
      waitCount.decrementAndGet();
      synchronized(waitObj){
       waitObj.notifyAll();
      }
     }
    }).start();
   }
   while( waitCount.intValue()>0) {
    synchronized (waitObj) {
     if(waitCount.intValue()>0){
      try {
       waitObj.wait();
      } catch (InterruptedException e) {
       e.printStackTrace();
      }
     }
    }
   }
   System.out.println("ok"+System.currentTimeMillis());
  }
  static void testLock2(){
   
   final CountDownLatch workLauch = new CountDownLatch(30000);//計(jì)數(shù)器
   System.out.println("start2"+System.currentTimeMillis());
   for (int i=0;i<30000;i++) {
    new Thread(new Runnable() {
     @Override
     public void run() {
      try {
       Thread.sleep(10);
      } catch (InterruptedException e) {
       e.printStackTrace();
      }
      workLauch.countDown();
     }
    }).start();
   }
   try {
    workLauch.await();
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
   System.out.println("ok2"+System.currentTimeMillis());
  }
  public static void main(String[] args) {
   testLock1();
   testLock2();
  }

第一種是我隨便寫的實(shí)現(xiàn),有點(diǎn)糙。第二種是朋友告知的一個(gè)類,java的concurrent中的,據(jù)說還有幾個(gè)相似功能的類實(shí)現(xiàn)。這30000個(gè)線程 時(shí)間差大概是不到200ms的樣子

以上這篇Java父線程(或是主線程)等待所有子線程退出的實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java8時(shí)間 yyyyMMddHHmmss格式轉(zhuǎn)為日期的代碼

    java8時(shí)間 yyyyMMddHHmmss格式轉(zhuǎn)為日期的代碼

    這篇文章主要介紹了java8時(shí)間 yyyyMMddHHmmss格式轉(zhuǎn)為日期的代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java中數(shù)組在內(nèi)存中存放原理的講解

    Java中數(shù)組在內(nèi)存中存放原理的講解

    今天小編就為大家分享一篇關(guān)于Java中數(shù)組在內(nèi)存中存放原理的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Java設(shè)計(jì)模式中的外觀模式詳解

    Java設(shè)計(jì)模式中的外觀模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式中的外觀模式詳解,外觀模式也叫“過程模式,外觀模式為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,此模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用
    2022-07-07
  • Java SSM整合開發(fā)統(tǒng)一結(jié)果封裝詳解

    Java SSM整合開發(fā)統(tǒng)一結(jié)果封裝詳解

    這篇文章主要介紹了Java SSM整合開發(fā)實(shí)現(xiàn)統(tǒng)一結(jié)果封裝,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • java讀取文件和寫入文件的方式(簡單實(shí)例)

    java讀取文件和寫入文件的方式(簡單實(shí)例)

    下面小編就為大家?guī)硪黄猨ava讀取文件和寫入文件的方式(簡單實(shí)例)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • Mybatis超詳細(xì)講解構(gòu)建SQL方法

    Mybatis超詳細(xì)講解構(gòu)建SQL方法

    這篇文章主要為大家詳細(xì)介紹了Mybatis構(gòu)建SQL,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-07-07
  • Java 實(shí)現(xiàn)Redis存儲(chǔ)復(fù)雜json格式數(shù)據(jù)并返回給前端

    Java 實(shí)現(xiàn)Redis存儲(chǔ)復(fù)雜json格式數(shù)據(jù)并返回給前端

    這篇文章主要介紹了Java 實(shí)現(xiàn)Redis存儲(chǔ)復(fù)雜json格式數(shù)據(jù)并返回給前端操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 淺談Java基礎(chǔ)知識(shí)之BigDecimal

    淺談Java基礎(chǔ)知識(shí)之BigDecimal

    我們又來回顧Java基礎(chǔ)知識(shí)啦,今天講的是BigDecimal的基本使用以及異常處理,下文中有非常詳細(xì)的代碼示例以及注釋哦,需要的朋友可以參考下
    2021-05-05
  • SpringBootWeb?入門了解?Swagger?的具體使用

    SpringBootWeb?入門了解?Swagger?的具體使用

    這篇文章主要介紹了SpringBootWeb?入門了解?Swagger?的具體使用,Swagger?框架可以根據(jù)已經(jīng)實(shí)現(xiàn)的方法或者類,通過頁面的方式直觀清晰的查看或者進(jìn)行測試該方法,需要的朋友可以參考下
    2024-08-08
  • Java使用JMeter進(jìn)行高并發(fā)測試

    Java使用JMeter進(jìn)行高并發(fā)測試

    軟件的壓力測試是一種保證軟件質(zhì)量的行為,本文主要介紹了Java使用JMeter進(jìn)行高并發(fā)測試,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評(píng)論