## EDU.oswego.cs.dl.util.concurrent
Class WaitableBoolean

    java.lang.Object
      EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
          EDU.oswego.cs.dl.util.concurrent.SynchronizedBoolean
              EDU.oswego.cs.dl.util.concurrent.WaitableBoolean

All Implemented Interfaces:
  Executor, java.lang.Cloneable, java.lang.Comparable

    public class WaitableBoolean

extends SynchronizedBoolean

A class useful for offloading synch for boolean instance variables.

[ Introduction to this package. ]

Field Summary

Fields inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedBoolean
`value_`

Fields inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
`lock_`

Constructor Summary
`WaitableBoolean(boolean initialValue)` Make a new WaitableBoolean with the given initial value
`WaitableBoolean(boolean initialValue, java.lang.Object lock)` Make a new WaitableBoolean with the given initial value, and using the supplied lock.

Method Summary
`boolean` `and(boolean b)` Set value to value & b.
`boolean` `commit(boolean assumedValue, boolean newValue)` Set value to newValue only if it is currently assumedValue.
`boolean` `complement()` Set the value to its complement
`boolean` `or(boolean b)` Set value to value | b.
`boolean` `set(boolean newValue)` Set to newValue.
`void` `whenEqual(boolean c, java.lang.Runnable action)` Wait until value equals c, then run action if nonnull.
`void` `whenFalse(java.lang.Runnable action)` Wait until value is false, then run action if nonnull.
`void` `whenNotEqual(boolean c, java.lang.Runnable action)` wait until value not equal to c, then run action if nonnull.
`void` `whenTrue(java.lang.Runnable action)` wait until value is true, then run action if nonnull.
`boolean` `xor(boolean b)` Set value to value ^ b.

Methods inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedBoolean
`compareTo, compareTo, compareTo, equals, get, hashCode, swap, toString`

Methods inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
`execute, getLock`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Constructor Detail

### WaitableBoolean

    public WaitableBoolean(boolean initialValue)

  Make a new WaitableBoolean with the given initial value

### WaitableBoolean

    public WaitableBoolean(boolean initialValue,
                           java.lang.Object lock)

  Make a new WaitableBoolean with the given initial value, and using the supplied lock.

Method Detail

### set

    public boolean set(boolean newValue)

  Description copied from class: `SynchronizedBoolean`
  Set to newValue.

  Overrides:
    `set` in class `SynchronizedBoolean`
  Returns:
    the old value

### commit

    public boolean commit(boolean assumedValue,
                          boolean newValue)

  Description copied from class: `SynchronizedBoolean`
  Set value to newValue only if it is currently assumedValue.

  Overrides:
    `commit` in class `SynchronizedBoolean`
  Returns:
    true if successful

### complement

    public boolean complement()

  Description copied from class: `SynchronizedBoolean`
  Set the value to its complement

  Overrides:
    `complement` in class `SynchronizedBoolean`
  Returns:
    the new value

### and

    public boolean and(boolean b)

  Description copied from class: `SynchronizedBoolean`
  Set value to value & b.

  Overrides:
    `and` in class `SynchronizedBoolean`
  Returns:
    the new value

### or

    public boolean or(boolean b)

  Description copied from class: `SynchronizedBoolean`
  Set value to value | b.

  Overrides:
    `or` in class `SynchronizedBoolean`
  Returns:
    the new value

### xor

    public boolean xor(boolean b)

  Description copied from class: `SynchronizedBoolean`
  Set value to value ^ b.

  Overrides:
    `xor` in class `SynchronizedBoolean`
  Returns:
    the new value

### whenFalse

    public void whenFalse(java.lang.Runnable action)
                   throws java.lang.InterruptedException

  Wait until value is false, then run action if nonnull. The action is run with the synchronization lock held.

  Throws:
    `java.lang.InterruptedException`

### whenTrue

    public void whenTrue(java.lang.Runnable action)
                  throws java.lang.InterruptedException

  wait until value is true, then run action if nonnull. The action is run with the synchronization lock held.

  Throws:
    `java.lang.InterruptedException`

### whenEqual

    public void whenEqual(boolean c,
                          java.lang.Runnable action)
                   throws java.lang.InterruptedException

  Wait until value equals c, then run action if nonnull. The action is run with the synchronization lock held.

  Throws:
    `java.lang.InterruptedException`

### whenNotEqual

    public void whenNotEqual(boolean c,
                             java.lang.Runnable action)
                      throws java.lang.InterruptedException

  wait until value not equal to c, then run action if nonnull. The action is run with the synchronization lock held.

  Throws:
    `java.lang.InterruptedException`