A CyclicBarrier ialah bantuan penyegerakan yang membolehkan satu set benang untuk semua menunggu antara satu sama lain untuk mencapai titik halangan yang sama. Setelah semua benang mencapai penghalang, mereka dilepaskan untuk meneruskan kerja mereka. Penghalang dipanggil "kitaran" kerana ia boleh digunakan semula selepas benang menunggu dilepaskan.
Untuk lebih memahami cara CyclicBarrier berfungsi, mari lihat contoh praktikal dan demo.
Berikut ialah contoh mudah yang menunjukkan penggunaan CyclicBarrier :
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."); } }
Apabila anda menjalankan kod di atas, anda akan melihat urutan berikut:
Berikut ialah contoh output:
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.
A CyclicBarrier ialah alat yang tidak ternilai untuk menyelaraskan berbilang urutan dalam Java. Ia membolehkan benang menunggu antara satu sama lain dan boleh digunakan semula merentasi berbilang kitaran, menjadikannya sesuai untuk banyak senario penyegerakan. Sama ada anda memproses data dalam kelompok atau melaksanakan algoritma selari, memahami cara menggunakan CyclicBarrier dengan berkesan akan meningkatkan kemahiran pengaturcaraan berbilang benang anda.
Jangan ragu untuk mengulas di bawah jika anda mempunyai sebarang soalan atau memerlukan penjelasan lanjut tentang menggunakan CyclicBarrier dalam projek anda!
Baca siaran lebih lanjut di : Apakah CyclicBarrier? Fakta dan Contoh Utama Diterangkan
Atas ialah kandungan terperinci Apakah CyclicBarrier? Fakta dan Contoh Utama Diterangkan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!