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:
- Vamos contar CountDownLatch: CountDownLatch countDownLatch = new CountDownLatch (3);
- Aguarde no encadeamento em espera: countDownLatch.await ();
- Reduza o valor da contagem em outros segmentos: countDownLatch.getCount ();
- 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" ); } }