EDU.oswego.cs.dl.util.concurrent
Class SynchronizedLong

java.lang.Object
  extended by EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
      extended by EDU.oswego.cs.dl.util.concurrent.SynchronizedLong
All Implemented Interfaces:
Executor, java.lang.Cloneable, java.lang.Comparable
Direct Known Subclasses:
WaitableLong

public class SynchronizedLong
extends SynchronizedVariable
implements java.lang.Comparable, java.lang.Cloneable

A class useful for offloading synch for long instance variables.

[ Introduction to this package. ]


Field Summary
protected  long value_
           
 
Fields inherited from class EDU.oswego.cs.dl.util.concurrent.SynchronizedVariable
lock_
 
Constructor Summary
SynchronizedLong(long initialValue)
          Make a new SynchronizedLong with the given initial value, and using its own internal lock.
SynchronizedLong(long initialValue, java.lang.Object lock)
          Make a new SynchronizedLong with the given initial value, and using the supplied lock.
 
Method Summary
 long add(long amount)
          Add amount to value (i.e., set value += amount)
 long and(long b)
          Set value to value & b.
 boolean commit(long assumedValue, long newValue)
          Set value to newValue only if it is currently assumedValue.
 int compareTo(long other)
           
 int compareTo(java.lang.Object other)
           
 int compareTo(SynchronizedLong other)
           
 long complement()
          Set the value to its complement
 long decrement()
          Decrement the value.
 long divide(long factor)
          Divide value by factor (i.e., set value /= factor)
 boolean equals(java.lang.Object other)
           
 long get()
          Return the current value
 int hashCode()
           
 long increment()
          Increment the value.
 long multiply(long factor)
          Multiply value by factor (i.e., set value *= factor)
 long negate()
          Set the value to the negative of its old value
 long or(long b)
          Set value to value | b.
 long set(long newValue)
          Set to newValue.
 long subtract(long amount)
          Subtract amount from value (i.e., set value -= amount)
 long swap(SynchronizedLong other)
          Atomically swap values with another SynchronizedLong.
 java.lang.String toString()
           
 long xor(long b)
          Set value to value ^ b.
 
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
 

Field Detail

value_

protected long value_
Constructor Detail

SynchronizedLong

public SynchronizedLong(long initialValue)
Make a new SynchronizedLong with the given initial value, and using its own internal lock.


SynchronizedLong

public SynchronizedLong(long initialValue,
                        java.lang.Object lock)
Make a new SynchronizedLong with the given initial value, and using the supplied lock.

Method Detail

get

public final long get()
Return the current value


set

public long set(long newValue)
Set to newValue.

Returns:
the old value

commit

public boolean commit(long assumedValue,
                      long newValue)
Set value to newValue only if it is currently assumedValue.

Returns:
true if successful

swap

public long swap(SynchronizedLong other)
Atomically swap values with another SynchronizedLong. Uses identityHashCode to avoid deadlock when two SynchronizedLongs attempt to simultaneously swap with each other.

Returns:
the new value

increment

public long increment()
Increment the value.

Returns:
the new value

decrement

public long decrement()
Decrement the value.

Returns:
the new value

add

public long add(long amount)
Add amount to value (i.e., set value += amount)

Returns:
the new value

subtract

public long subtract(long amount)
Subtract amount from value (i.e., set value -= amount)

Returns:
the new value

multiply

public long multiply(long factor)
Multiply value by factor (i.e., set value *= factor)

Returns:
the new value

divide

public long divide(long factor)
Divide value by factor (i.e., set value /= factor)

Returns:
the new value

negate

public long negate()
Set the value to the negative of its old value

Returns:
the new value

complement

public long complement()
Set the value to its complement

Returns:
the new value

and

public long and(long b)
Set value to value & b.

Returns:
the new value

or

public long or(long b)
Set value to value | b.

Returns:
the new value

xor

public long xor(long b)
Set value to value ^ b.

Returns:
the new value

compareTo

public int compareTo(long other)
Specified by:
compareTo in interface java.lang.Comparable

compareTo

public int compareTo(SynchronizedLong other)
Specified by:
compareTo in interface java.lang.Comparable

compareTo

public int compareTo(java.lang.Object other)
Specified by:
compareTo in interface java.lang.Comparable

equals

public boolean equals(java.lang.Object other)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object