class AtomicReference

An object reference that may be updated atomically. All read and write operations have java volatile semantic.

@!macro thread_safe_variable_comparison

@see docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicReference.html @see docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/package-summary.html

@!method initialize(value = nil)

@!macro atomic_reference_method_initialize
  @param [Object] value The initial value.

@!method get

@!macro atomic_reference_method_get
  Gets the current value.
  @return [Object] the current value

@!method set(new_value)

@!macro atomic_reference_method_set
  Sets to the given value.
  @param [Object] new_value the new value
  @return [Object] the new value

@!method get_and_set(new_value)

@!macro atomic_reference_method_get_and_set
  Atomically sets to the given value and returns the old value.
  @param [Object] new_value the new value
  @return [Object] the old value

@!method compare_and_set(old_value, new_value)

@!macro atomic_reference_method_compare_and_set

  Atomically sets the value to the given updated value if
  the current value == the expected value.

  @param [Object] old_value the expected value
  @param [Object] new_value the new value

  @return [Boolean] `true` if successful. A `false` return indicates
  that the actual value was not equal to the expected value.

@!method update

Pass the current value to the given block, replacing it
with the block's result. May retry if the value changes
during the block's execution.

@yield [Object] Calculate a new value for the atomic reference using
  given (old) value
@yieldparam [Object] old_value the starting value of the atomic reference
@return [Object] the new value

@!method try_update

Pass the current value to the given block, replacing it
with the block's result. Return nil if the update fails.

@yield [Object] Calculate a new value for the atomic reference using
  given (old) value
@yieldparam [Object] old_value the starting value of the atomic reference
@note This method was altered to avoid raising an exception by default.
  Instead, this method now returns `nil` in case of failure. For more info,
  please see: https://github.com/ruby-concurrency/concurrent-ruby/pull/336
@return [Object] the new value, or nil if update failed

@!method try_update!

Pass the current value to the given block, replacing it
with the block's result. Raise an exception if the update
fails.

@yield [Object] Calculate a new value for the atomic reference using
  given (old) value
@yieldparam [Object] old_value the starting value of the atomic reference
@note This behavior mimics the behavior of the original
  `AtomicReference#try_update` API. The reason this was changed was to
  avoid raising exceptions (which are inherently slow) by default. For more
  info: https://github.com/ruby-concurrency/concurrent-ruby/pull/336
@return [Object] the new value
@raise [Concurrent::ConcurrentUpdateError] if the update fails

Public Instance Methods

inspect()
Alias for: to_s
to_s() click to toggle source

@return [String] Short string representation.

Calls superclass method
# File lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb, line 129
def to_s
  format '%s value:%s>', super[0..-2], get
end
Also aliased as: inspect