Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Fixed text explaining the compliant solution

...

Compliant Solution (synchronization)

This compliant solution synchronized the toggle() method to ensure that the flag is made guards reads and writes to the flag field with a lock on the instance, i.e., this. This is accomplished by declaring both methods to be synchronized. This solution, via locking, ensures that changes are visible to all the program's threads.

Code Block
bgColor#ccccff
class Foo {
  private boolean flag = true;
 
  public synchronized void toggle() { 
    flag ^= true; // same as flag = !flag; 
  }

  public synchronized boolean getFlag() { 
    return flag;
  }
}

...