Copie el código de código de la siguiente manera:
clase pública TestCyclicBarrier {
int final estático privado THREAD_NUM = 5;
La clase estática pública WorkerThread implementa Runnable{
Barrera cíclica;
hilo de trabajo público (barrera cíclica b) {
esta.barrera = b;
}
@Anular
ejecución pública vacía() {
// TODO Código auxiliar de método generado automáticamente
intentar{
System.out.println("El trabajador está esperando");
// Los subprocesos esperan aquí hasta que todos los subprocesos alcancen la barrera.
barrera.await();
System.out.println("ID:"+Thread.currentThread().getId()+" Trabajando");
}catch(Excepción e){
e.printStackTrace();
}
}
}
/**
* argumentos @param
*/
público estático vacío principal (String [] argumentos) {
// TODO Código auxiliar de método generado automáticamente
CyclicBarrier cb = nuevo CyclicBarrier(THREAD_NUM, nuevo Runnable() {
//Se ejecuta cuando todos los hilos alcanzan la barrera
@Anular
ejecución pública vacía() {
// TODO Código auxiliar de método generado automáticamente
System.out.println("Barrera interior");
}
});
para(int i=0;i<THREAD_NUM;i++){
nuevo hilo(nuevo WorkerThread(cb)).start();
}
}
}
/*
Aquí está el resultado:
Trabajador esperando
Trabajador esperando
Trabajador esperando
Trabajador esperando
Trabajador esperando
Barrera interior
ID:12 Trabajando
ID:8 Trabajando
ID:11 Trabajando
ID:9 Trabajando
ID:10 Trabajando
*/
1. Especifique un número cuando se inicializa CyclicBarrier y luego calcule el número de subprocesos que llaman a CyclicBarrier.await() para esperar. Cuando el número de subprocesos alcanza este número, todos los subprocesos que han entrado en estado de espera se despiertan y continúan.
2. CyclicBarrier, como su nombre lo indica, puede considerarse como un obstáculo. Todos los subprocesos deben estar presentes antes de que puedan superar este obstáculo juntos.
3. CyclicBarrier también puede tomar un parámetro Runnable inicialmente. Esta tarea Runnable se ejecutará después de que se alcance el número de CyclicBarriers y antes de que se despierten todos los demás subprocesos.