CountDownLatch de componentes simultâneos Java

Usar cenário:

      Um ou N threads, aguarde que outros threads concluam uma operação antes de continuar executando. CountDownLatch descreve o relacionamento entre um ou N threads aguardando outros threads.

Como usar:
  1. Vamos contar CountDownLatch: CountDownLatch countDownLatch = new CountDownLatch (3);
  2. Aguarde no encadeamento em espera: countDownLatch.await ();
  3. Reduza o valor da contagem em outros segmentos: countDownLatch.getCount ();
  4. Depois que o número de countDownLatch.getCount () em outros encadeamentos for o valor da contagem no momento da instanciação, ative o encadeamento em espera
public  class T06_TestCountDownLatch {
     public  static  void main (String [] args) { 
        usingJoin (); 
        usingCountDownLatch (); 
    } 

    void estático privado  usingCountDownLatch () { 
        Thread [] threads = new Thread [100 ]; 
        Trava CountDownLatch = nova CountDownLatch (threads.length); for ( int i = 0; i <comprimento do 
            thread ; i ++ ) { threads [i] = novo segmento (() -> {
                 int resultado = 0 

        ;
                para ( int j = 0; j <10000; j ++) resultado + = j; 
                latch.countDown (); 
            }); 
        } 

        for ( int i = 0; i < 
            comprimento do thread ; i ++ ) { threads [i] .start (); 
        } 

        tente { 
            latch.await (); 
        } catch (InterruptedException e) { 
            e.printStackTrace (); 
        } 

        System.out.println ( "trava final" ); 
    } 

    void estático privado  usingJoin () { 
        Thread [] threads = novo segmento [100 ]; 

        for ( int i = 0; i <threads.length; i ++ ) { 
            threads [i] = new Thread (() -> {
                 int result = 0 ;
                 for ( int j = 0; j <10000; j ++) resultado + = j; 
            }); 
        } 

        for ( int i = 0; i < 
            comprimento do thread ; i ++ ) { threads [i] .start (); 
        } 

        for ( int i = 0; i <comprimento do thread; i ++ ) {
             try {
                tópicos [i] .join (); 
            } catch (InterruptedException e) { 
                e.printStackTrace (); 
            } 
        } 

        System.out.println ( "junção final" ); 
    } 
}

 

Acho que você gosta

Origin www.cnblogs.com/Courage129/p/12725391.html
Recomendado
Clasificación