CountDownLatch de componentes concurrentes de Java

Escenario de uso:

      Uno o N subprocesos, espere a que otros subprocesos completen una operación antes de continuar con la ejecución. CountDownLatch describe la relación entre uno o N subprocesos que esperan otros subprocesos.

Cómo utilizar:
  1. Deje que CountDownLatch cuente: CountDownLatch countDownLatch = new CountDownLatch (3);
  2. Espere en el hilo de espera: countDownLatch.await ();
  3. Reduzca el valor de recuento en otros subprocesos: countDownLatch.getCount ();
  4. Una vez que el número de countDownLatch.getCount () en otros subprocesos es el valor de recuento en el momento de la creación de instancias, active el subproceso en espera
public  class T06_TestCountDownLatch {
     public  static  void main (String [] args) { 
        usingJoin (); 
        usingCountDownLatch (); 
    } 

    vacío estático privado  usandoCountDownLatch () { 
        Thread [] threads = new Thread [100 ]; 
        CountDownLatch latch = new CountDownLatch (threads.length); for ( int i = 0; i <threads.length; i ++ ) { 
            threads [i] = new Thread (() -> {
                 int result = 0 

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

        para ( int i = 0; i <threads.length; i ++ ) { 
            threads [i] .start (); 
        } 

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

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

    vacío estático privado  usandoJoin () { 
        Thread [] hilos = nuevo hilo [100 ]; 

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

        para ( int i = 0; i <threads.length; i ++ ) { 
            threads [i] .start (); 
        } 

        for ( int i = 0; i <threads.length; i ++ ) {
             try {
                hilos [i] .join (); 
            } catch (InterruptedException e) { 
                e.printStackTrace (); 
            } 
        } 

        System.out.println ( "fin de la unión" ); 
    } 
}

 

Supongo que te gusta

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