乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      CountDownLatch的使用

       瀚海璨夜 2016-10-10
       CountDownLatch是一個同步輔助類,猶如倒計時計數(shù)器,創(chuàng)建對象時通過構(gòu)造方法設(shè)置初始值,調(diào)用CountDownLatch對象的await()方法則處于等待狀態(tài),調(diào)用countDown()方法就將計數(shù)器減1,當(dāng)計數(shù)到達(dá)0時,則所有等待者或單個等待者開始執(zhí)行。
       
      復(fù)制代碼
       1 package com.thread;
       2 import java.util.concurrent.CountDownLatch;
       3 import java.util.concurrent.CyclicBarrier;
       4 import java.util.concurrent.ExecutorService;
       5 import java.util.concurrent.Executors;
       6 /**
       7  * 
       8  * @author Administrator
       9  *該程序用來模擬發(fā)送命令與執(zhí)行命令,主線程代表指揮官,新建3個線程代表戰(zhàn)士,戰(zhàn)士一直等待著指揮官下達(dá)命令,
      10  *若指揮官沒有下達(dá)命令,則戰(zhàn)士們都必須等待。一旦命令下達(dá),戰(zhàn)士們都去執(zhí)行自己的任務(wù),指揮官處于等待狀態(tài),戰(zhàn)士們?nèi)蝿?wù)執(zhí)行完畢則報告給
      11  *指揮官,指揮官則結(jié)束等待。
      12  */
      13 public class CountdownLatchTest {
      14 
      15     public static void main(String[] args) {
      16         ExecutorService service = Executors.newCachedThreadPool(); //創(chuàng)建一個線程池
      17         final CountDownLatch cdOrder = new CountDownLatch(1);//指揮官的命令,設(shè)置為1,指揮官一下達(dá)命令,則cutDown,變?yōu)?,戰(zhàn)士們執(zhí)行任務(wù)
      18         final CountDownLatch cdAnswer = new CountDownLatch(3);//因?yàn)橛腥齻€戰(zhàn)士,所以初始值為3,每一個戰(zhàn)士執(zhí)行任務(wù)完畢則cutDown一次,當(dāng)三個都執(zhí)行完畢,變?yōu)?,則指揮官停止等待。        
      19         for(int i=0;i<3;i++){
      20             Runnable runnable = new Runnable(){
      21                     public void run(){
      22                     try {
      23                         System.out.println("線程" + Thread.currentThread().getName() + 
      24                                 "正準(zhǔn)備接受命令");                        
      25                         cdOrder.await(); //戰(zhàn)士們都處于等待命令狀態(tài)
      26                         System.out.println("線程" + Thread.currentThread().getName() + 
      27                         "已接受命令");                                
      28                         Thread.sleep((long)(Math.random()*10000));    
      29                         System.out.println("線程" + Thread.currentThread().getName() + 
      30                                 "回應(yīng)命令處理結(jié)果");                        
      31                         cdAnswer.countDown(); //任務(wù)執(zhí)行完畢,返回給指揮官,cdAnswer減1。                    
      32                     } catch (Exception e) {
      33                         e.printStackTrace();
      34                     }                
      35                 }
      36             };
      37             service.execute(runnable);//為線程池添加任務(wù)
      38         }        
      39         try {
      40             Thread.sleep((long)(Math.random()*10000));
      41         
      42             System.out.println("線程" + Thread.currentThread().getName() + 
      43                     "即將發(fā)布命令");                        
      44             cdOrder.countDown(); //發(fā)送命令,cdOrder減1,處于等待的戰(zhàn)士們停止等待轉(zhuǎn)去執(zhí)行任務(wù)。
      45             System.out.println("線程" + Thread.currentThread().getName() + 
      46             "已發(fā)送命令,正在等待結(jié)果");    
      47             cdAnswer.await(); //命令發(fā)送后指揮官處于等待狀態(tài),一旦cdAnswer為0時停止等待繼續(xù)往下執(zhí)行
      48             System.out.println("線程" + Thread.currentThread().getName() + 
      49             "已收到所有響應(yīng)結(jié)果");    
      50         } catch (Exception e) {
      51             e.printStackTrace();
      52         }                
      53         service.shutdown(); //任務(wù)結(jié)束,停止線程池的所有線程
      54 
      55     }
      56 }
      復(fù)制代碼


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

      復(fù)制代碼
      線程pool-1-thread-2正準(zhǔn)備接受命令
      線程pool-1-thread-3正準(zhǔn)備接受命令
      線程pool-1-thread-1正準(zhǔn)備接受命令
      線程main即將發(fā)布命令
      線程pool-1-thread-2已接受命令
      線程pool-1-thread-3已接受命令
      線程pool-1-thread-1已接受命令
      線程main已發(fā)送命令,正在等待結(jié)果
      線程pool-1-thread-2回應(yīng)命令處理結(jié)果
      線程pool-1-thread-1回應(yīng)命令處理結(jié)果
      線程pool-1-thread-3回應(yīng)命令處理結(jié)果
      線程main已收到所有響應(yīng)結(jié)果
      復(fù)制代碼

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多