// demonstrating the use of the barrier class // Requires barrier.java and plaingui.java. class TA implements Runnable { barrier BR; plaingui gui = new plaingui(0,0,260,340); // makes gui window public TA(barrier i) {BR=i;} public void run() { try { Thread.sleep(1000); gui.outputarea.append("TA waiting on barrier\n"); BR.block(); gui.outputarea.append("TA has been released\n"); } catch (InterruptedException ie) {System.out.println(ie);} } } //TA class TB implements Runnable { barrier BR; plaingui gui = new plaingui(280,0,260,340); public TB(barrier i) {BR=i;} public void run() { try { Thread.sleep(3000); gui.outputarea.append("TB releasing blocked threads\n"); BR.release(); gui.outputarea.append("TB releasing blocked threads\n"); } catch (InterruptedException ie) {System.out.println(ie);} } } //TA public class usebarrier { public static void main(String[] args) throws InterruptedException { barrier BR = new barrier(); Thread t1 = new Thread(new TA(BR)); Thread t2 = new Thread(new TB(BR)); t1.start(); t2.start(); t1.join(); t2.join(); } }