CyclicBarriar de componentes simultâneos Java 2

Usar cenário:

Vários encadeamentos esperam um pelo outro até que possam atender às condições antes de poderem executar operações subseqüentes. CyclicBarrier descreve a relação de espera entre cada encadeamento.

Siga as etapas:

  1. Instanciação normal: CyclicBarrier sCyclicBarrier = new CyclicBarrier (3);
  2. Com a instanciação de runnable, quando a barreira é quebrada, Runnable é executado primeiro: CyclicBarrier sCyclicBarrier = new CyclicBarrier (3, new Runnable () {// todo});
  3. aguardar: sCyclicBarrier.await ();
  4. Quando o número de threads de espera é o valor da contagem. Ative todos os threads em espera.

Princípio: explicado diretamente com o código fonte aqui (suplemento subsequente)

  1. O bloqueio é ReentrantLock bloqueio reentrante. ReentrantLock lock = new ReentrantLock ()
  2. Adquira a instância de condição do bloqueio. Condição trip = lock.newCondition ()
  3. aguarde thread, use Condition.await
  4. encadeamento de sinal, usando Condition.signalAll
  5. Dois construtores, inicializam o valor da parte, o valor da contagem e o Runnable (o runnable é executado primeiro ao acordar)
  6. O valor da contagem é usado para calcular o número de threads. Toda vez que um thread executa o método wait, --count. Até a contagem == 0
  7. aguardar método, incluindo tempo limite e tempo limite
  8. dowait é o principal código lógico da espera de threads. Quando count == 0, a operação de ativação é executada. Quando não for 0, insira o loop for e execute Condition.await.
  9. O loop for no dowait é para a lógica da operação de tempo limite.
  10. O salto normal para fora do loop for é através do método dowait (nextGeneration () re-instancia a gennaration)
  11. breakBarrier () quebra a barreira e ativa todos os threads de espera
  12. nextGeneration () atualiza o status e ativa todos os threads de espera
  13. reset () redefine o estado. Chama breakBarrier () e nextGeneration ()

 

Acho que você gosta

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