STMImpl

object STMImpl extends STMSelector

STMImpl gathers all of the functionality required to plug an STM implementation into scala.concurrent.stm. Only one implementation can be selected, because Refs and atomic blocks from different STM implementations are not compatible. STMImpl.instance returns the STMImpl instance that has been selected for this program execution.

STMImpl gathers all of the functionality required to plug an STM implementation into scala.concurrent.stm. Only one implementation can be selected, because Refs and atomic blocks from different STM implementations are not compatible. STMImpl.instance returns the STMImpl instance that has been selected for this program execution.

There are two ways to explicitly select the STMImpl instance:

  1. set the JVM system property "scala.stm.impl" to the name of a class that implements STMImpl; or

  2. arrange for STMImpl.select or STMImpl.trySelect to be called before any Refs are constructed and before any atomic blocks are executed.

Setting the JVM system property "scala.stm.impl" is equivalent to making a call to STMImpl.select(System.getProperty("scala.stm.impl")) before any other STMImpl selections.

If there is no explicitly selected STMImpl instance and the classpath contains a class scala.concurrent.stm.impl.DefaultFactory that extends scala.concurrent.stm.impl.STMImpl.Factory, then an instance of that class will be instantiated and used to generate the STMImpl instance. ScalaSTM implementations are encouraged to implement DefaultFactory so that if a user includes the implementation's JAR file, it will be automatically selected.

If no explicit selection has been made and there is no definition of scala.concurrent.stm.impl.DefaultFactory present in the classpath, then ScalaSTM will fall back to the reference implementation "scala.concurrent.stm.ccstm.CCSTM".

Authors

Nathan Bronson

Companion
class
class Object
trait Matchable
class Any

Type members

Classlikes

trait Factory

Value members

Concrete methods

Returns the instance of STMImpl that should be used to implement all ScalaSTM functionality. Calling this method forces the implementation to be chosen if it has not already been selected.

Returns the instance of STMImpl that should be used to implement all ScalaSTM functionality. Calling this method forces the implementation to be chosen if it has not already been selected.

Inherited methods

def select(impl: STMImpl): Unit

Installs impl as the system-wide STM implementation if no STMImpl has yet been chosen, or verifies that impl is equal to the previously selected instance, throwing IllegalStateException if an STM implementation has already been selected and impl != instance

Installs impl as the system-wide STM implementation if no STMImpl has yet been chosen, or verifies that impl is equal to the previously selected instance, throwing IllegalStateException if an STM implementation has already been selected and impl != instance

Inherited from
STMSelector
def select(implClassName: String): Unit

Installs Class.forName(implClassName) as the system-wide STM implementation if no STMImpl has yet been chosen, or verifies that implClassName was previously selected, throwing IllegalStateException if a different STM implementation has already been selected

Installs Class.forName(implClassName) as the system-wide STM implementation if no STMImpl has yet been chosen, or verifies that implClassName was previously selected, throwing IllegalStateException if a different STM implementation has already been selected

Inherited from
STMSelector
def trySelect(implClassName: String): Boolean

If no STMImpl instance has yet been selected, installs an instance of Class.forName(implClassName) as the system-wide STM implementation. Returns true if implClassName was newly or previously selected, or returns false if another STM implementation was chosen.

If no STMImpl instance has yet been selected, installs an instance of Class.forName(implClassName) as the system-wide STM implementation. Returns true if implClassName was newly or previously selected, or returns false if another STM implementation was chosen.

Inherited from
STMSelector