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

    java.lang.Object
      EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
          EDU.oswego.cs.dl.util.concurrent.SynchronizedChar
              EDU.oswego.cs.dl.util.concurrent.WaitableChar

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

    public class WaitableChar

extends SynchronizedChar

A class useful for offloading waiting and signalling operations on single char variables.

[ Introduction to this package. ]

Field Summary

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

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

Constructor Summary
`WaitableChar(char initialValue)` Make a new WaitableChar with the given initial value, and using its own internal lock.
`WaitableChar(char initialValue, java.lang.Object lock)` Make a new WaitableChar with the given initial value, and using the supplied lock.

Method Summary
`char` `add(char amount)` Add amount to value (i.e., set value += amount)
`boolean` `commit(char assumedValue, char newValue)` Set value to newValue only if it is currently assumedValue.
`char` `divide(char factor)` Divide value by factor (i.e., set value /= factor)
`char` `multiply(char factor)` Multiply value by factor (i.e., set value *= factor)
`char` `set(char newValue)` Set to newValue.
`char` `subtract(char amount)` Subtract amount from value (i.e., set value -= amount)
`void` `whenEqual(char c, java.lang.Runnable action)` Wait until value equals c, then run action if nonnull.
`void` `whenGreater(char c, java.lang.Runnable action)` wait until value greater than c, then run action if nonnull.
`void` `whenGreaterEqual(char c, java.lang.Runnable action)` wait until value greater than or equal to c, then run action if nonnull.
`void` `whenLess(char c, java.lang.Runnable action)` wait until value less than c, then run action if nonnull.
`void` `whenLessEqual(char c, java.lang.Runnable action)` wait until value less than or equal to c, then run action if nonnull.
`void` `whenNotEqual(char c, java.lang.Runnable action)` wait until value not equal to c, then run action if nonnull.

Methods inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedChar
`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

### WaitableChar

    public WaitableChar(char initialValue)

  Make a new WaitableChar with the given initial value, and using its own internal lock.

### WaitableChar

    public WaitableChar(char initialValue,
                        java.lang.Object lock)

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

Method Detail

### set

    public char set(char newValue)

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

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

### commit

    public boolean commit(char assumedValue,
                          char newValue)

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

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

### add

    public char add(char amount)

  Description copied from class: `SynchronizedChar`
  Add amount to value (i.e., set value += amount)

  Overrides:
    `add` in class `SynchronizedChar`
  Returns:
    the new value

### subtract

    public char subtract(char amount)

  Description copied from class: `SynchronizedChar`
  Subtract amount from value (i.e., set value -= amount)

  Overrides:
    `subtract` in class `SynchronizedChar`
  Returns:
    the new value

### multiply

    public char multiply(char factor)

  Description copied from class: `SynchronizedChar`
  Multiply value by factor (i.e., set value *= factor)

  Overrides:
    `multiply` in class `SynchronizedChar`
  Returns:
    the new value

### divide

    public char divide(char factor)

  Description copied from class: `SynchronizedChar`
  Divide value by factor (i.e., set value /= factor)

  Overrides:
    `divide` in class `SynchronizedChar`
  Returns:
    the new value

### whenEqual

    public void whenEqual(char 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(char 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`

### whenLessEqual

    public void whenLessEqual(char c,
                              java.lang.Runnable action)
                       throws java.lang.InterruptedException

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

  Throws:
    `java.lang.InterruptedException`

### whenLess

    public void whenLess(char c,
                         java.lang.Runnable action)
                  throws java.lang.InterruptedException

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

  Throws:
    `java.lang.InterruptedException`

### whenGreaterEqual

    public void whenGreaterEqual(char c,
                                 java.lang.Runnable action)
                          throws java.lang.InterruptedException

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

  Throws:
    `java.lang.InterruptedException`

### whenGreater

    public void whenGreater(char c,
                            java.lang.Runnable action)
                     throws java.lang.InterruptedException

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

  Throws:
    `java.lang.InterruptedException`