class Thread2 { // swap instruction apprach to mutual exclusion public static void main(String args[]) { // lock shared by all threads HardwareData shared_lock = new HardwareData (false); // local lock in each thread HardwareData key = new HardwareData (true); while (true) { key.set (true); do { shared_lock.swap (key); } while (key.get() == true); // critical section shared_lock.set (false); // remainder section } } }