Package EDU.oswego.cs.dl.util.concurrent
Class SynchronizedChar
- java.lang.Object
-
- EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
-
- EDU.oswego.cs.dl.util.concurrent.SynchronizedChar
-
- All Implemented Interfaces:
Executor
,java.lang.Cloneable
,java.lang.Comparable
- Direct Known Subclasses:
WaitableChar
public class SynchronizedChar extends SynchronizedVariable implements java.lang.Comparable, java.lang.Cloneable
A class useful for offloading synch for char instance variables.
-
-
Field Summary
Fields Modifier and Type Field Description protected char
value_
-
Fields inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
lock_
-
-
Constructor Summary
Constructors Constructor Description SynchronizedChar(char initialValue)
Make a new SynchronizedChar with the given initial value, and using its own internal lock.SynchronizedChar(char initialValue, java.lang.Object lock)
Make a new SynchronizedChar with the given initial value, and using the supplied lock.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.int
compareTo(char other)
int
compareTo(SynchronizedChar other)
int
compareTo(java.lang.Object other)
char
divide(char factor)
Divide value by factor (i.e., set value /= factor)boolean
equals(java.lang.Object other)
char
get()
Return the current valueint
hashCode()
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)char
swap(SynchronizedChar other)
Atomically swap values with another SynchronizedChar.java.lang.String
toString()
-
Methods inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
execute, getLock
-
-
-
-
Constructor Detail
-
SynchronizedChar
public SynchronizedChar(char initialValue)
Make a new SynchronizedChar with the given initial value, and using its own internal lock.
-
SynchronizedChar
public SynchronizedChar(char initialValue, java.lang.Object lock)
Make a new SynchronizedChar with the given initial value, and using the supplied lock.
-
-
Method Detail
-
get
public final char get()
Return the current value
-
set
public char set(char newValue)
Set to newValue.- Returns:
- the old value
-
commit
public boolean commit(char assumedValue, char newValue)
Set value to newValue only if it is currently assumedValue.- Returns:
- true if successful
-
swap
public char swap(SynchronizedChar other)
Atomically swap values with another SynchronizedChar. Uses identityHashCode to avoid deadlock when two SynchronizedChars attempt to simultaneously swap with each other. (Note: Ordering via identyHashCode is not strictly guaranteed by the language specification to return unique, orderable values, but in practice JVMs rely on them being unique.)- Returns:
- the new value
-
add
public char add(char amount)
Add amount to value (i.e., set value += amount)- Returns:
- the new value
-
subtract
public char subtract(char amount)
Subtract amount from value (i.e., set value -= amount)- Returns:
- the new value
-
multiply
public char multiply(char factor)
Multiply value by factor (i.e., set value *= factor)- Returns:
- the new value
-
divide
public char divide(char factor)
Divide value by factor (i.e., set value /= factor)- Returns:
- the new value
-
compareTo
public int compareTo(char other)
-
compareTo
public int compareTo(SynchronizedChar other)
-
compareTo
public int compareTo(java.lang.Object other)
- Specified by:
compareTo
in interfacejava.lang.Comparable
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-