Java/Threads/CyclicBarrier
Версия от 21:01, 31 мая 2010; (обсуждение)
A thread of execution that uses a CyclicBarrier
<source lang="java">
import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; class BarDemo {
public static void main(String args[]) { CyclicBarrier cb = new CyclicBarrier(3, new BarAction()); System.out.println("Starting"); new MyThread(cb, "A"); new MyThread(cb, "B"); new MyThread(cb, "C"); }
} class MyThread implements Runnable {
CyclicBarrier cbar; String name; MyThread(CyclicBarrier c, String n) { cbar = c; name = n; new Thread(this).start(); } public void run() { System.out.println(name); try { cbar.await(); } catch (BrokenBarrierException exc) { System.out.println(exc); } catch (InterruptedException exc) { System.out.println(exc); } }
} class BarAction implements Runnable {
public void run() { System.out.println("Barrier Reached!"); }
} public class MainClass {
public static void main(String args[]) { CyclicBarrier cb = new CyclicBarrier(3, new BarAction()); System.out.println("Starting"); new MyThread(cb, "A"); new MyThread(cb, "B"); new MyThread(cb, "C"); new MyThread(cb, "X"); new MyThread(cb, "Y"); new MyThread(cb, "Z"); }
}
</source>