Ein CyclicBarrier ist eine Synchronisationshilfe, die es einer Reihe von Threads ermöglicht, darauf zu warten, dass einander einen gemeinsamen Barrierenpunkt erreichen. Sobald alle Threads die Barriere erreichen, werden sie freigegeben, um ihre Arbeit fortzusetzen. Die Barriere wird „zyklisch“ genannt, da sie nach der Freigabe der wartenden Threads wiederverwendet werden kann.
Um besser zu verstehen, wie ein CyclicBarrier funktioniert, schauen wir uns ein praktisches Beispiel und eine Demo an.
Hier ist ein einfaches Beispiel, das die Verwendung von CyclicBarrier demonstriert:
import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; public class CyclicBarrierDemo { public static void main(String[] args) { final int numberOfThreads = 3; CyclicBarrier barrier = new CyclicBarrier(numberOfThreads, new BarrierAction()); for (int i = 0; i < numberOfThreads; i++) { new Thread(new Task(barrier)).start(); } } } class Task implements Runnable { private final CyclicBarrier barrier; Task(CyclicBarrier barrier) { this.barrier = barrier; } @Override public void run() { try { System.out.println(Thread.currentThread().getName() + " is waiting at the barrier."); barrier.await(); System.out.println(Thread.currentThread().getName() + " has passed the barrier."); } catch (InterruptedException | BrokenBarrierException e) { e.printStackTrace(); } } } class BarrierAction implements Runnable { @Override public void run() { System.out.println("Barrier Action executed. All threads are released."); } }
Wenn Sie den obigen Code ausführen, werden Sie die folgende Reihenfolge beobachten:
Hier ist eine Beispielausgabe:
Thread-0 is waiting at the barrier. Thread-1 is waiting at the barrier. Thread-2 is waiting at the barrier. Barrier Action executed. All threads are released. Thread-0 has passed the barrier. Thread-1 has passed the barrier. Thread-2 has passed the barrier.
Ein CyclicBarrier ist ein unschätzbar wertvolles Werkzeug zum Koordinieren mehrerer Threads in Java. Es ermöglicht Threads, aufeinander zu warten und kann über mehrere Zyklen hinweg wiederverwendet werden, was es ideal für viele Synchronisierungsszenarien macht. Ganz gleich, ob Sie Daten stapelweise verarbeiten oder parallele Algorithmen implementieren: Wenn Sie wissen, wie Sie CyclicBarrier effektiv nutzen, verbessern Sie Ihre Fähigkeiten in der Multithread-Programmierung.
Kommentieren Sie unten, wenn Sie Fragen haben oder weitere Erläuterungen zur Verwendung von CyclicBarrier in Ihren Projekten benötigen!
Weitere Beiträge finden Sie unter: Was ist CyclicBarrier? Wichtige Fakten und Beispiele erklärt
Das obige ist der detaillierte Inhalt vonWas ist CyclicBarrier? Wichtige Fakten und Beispiele erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!