STMImpl
gathers all of the functionality required to plug an STM
implementation into scala.concurrent.stm
. Only one implementation can
be selected, because Ref
s 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 Ref
s 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:
-
set the JVM system property "scala.stm.impl" to the name of a class that implements
STMImpl
; or -
arrange for
STMImpl.select
orSTMImpl.trySelect
to be called before anyRef
s 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
Type members
Classlikes
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
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
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
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