// stand alone version of j.n.magee 11/11/96 // by mh 19/03/03 // needs basic understanding of // - package handling // - graphical user interfaces // - thread programming //package concurrency; import java.awt.*; import java.awt.event.*; //import concurrency.display.*; class Rotator implements Runnable { // pattern of behavior public void run() { try { while(true) ThreadPanel.rotate(); // -> concurrency.display } catch(InterruptedException e) {} } } // class Rotator public class ThreadDemoGui { public static void main (String[] argv) { MyFrame frame = new MyFrame(); Panel p = new Panel(); // provided by concurrency.display ThreadPanel A = new ThreadPanel("Thread A",Color.blue); ThreadPanel B = new ThreadPanel("Thread B",Color.blue); p.add(A); p.add(B); frame.add(p); frame.setTitle("Thread Demo Using GUI"); frame.setSize(400,250); frame.show(); // start A.start(new Rotator()); B.start(new Rotator()); } // main } // ThreadDemoGui class MyFrame extends Frame { public MyFrame() { // this listener closes a frame addWindowListener ( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } // MyFrame } // class MyFrame