import java.util.*; public class BusyWait implements Runnable { protected MySignal signal; BusyWait(MySignal s) { signal = s; } public static void main(String args[]) { MySignal sharedSignal = new MySignal(); new Thread(new BusyWait(sharedSignal)).start(); new Thread(new BusyWait(sharedSignal)).start(); } public void run() { try { while(signal.hasDataToProcess() == false) { } signal.setHasDataToProcess(false); int i; for(i=0; i<10; i++) { Thread.sleep(100); System.out.println(Thread.currentThread().getName()+" iteration: "+i); } signal.setHasDataToProcess(true); System.out.println("Exiting!"); } catch(InterruptedException ex) { ex.printStackTrace(); } } }