# Package org.multiverse.api

Interface Summary
Interface | Description
--- | ---
BackoffPolicy | A policy to be used when `Txn` or an atomic operation can't make any progress, e.g.
Lock | The Lock provides access to pessimistic behavior of a `TxnObject`.
OrElseBlock | The OrElse is responsible for executing the either block, or in case of a retry, the orelse block is executed.
Stm | The main interface for software transactional memory.
Txn | The unit of work for `Stm`.
TxnConfig | Contains the transaction configuration used by a `Txn`.
TxnExecutor | An TxnExecutor is responsible for executing an atomic callable.
TxnFactory | A Factory responsible for creating a `Txn`.
TxnFactoryBuilder | A Builder for creating a `TxnFactory` and `TxnExecutor`.
TxnObject | The interface each transactional object needs to implement.

Class Summary
Class | Description
--- | ---
DefaultBackoffPolicy | A `BackoffPolicy` that does an 'exponential' backoff.
GlobalStmInstance | A singleton that can be used for easy access to the `Stm` that is used globally.
StmUtils | A utility class with convenience methods to access the `Stm` or `Txn`.
TxnThreadLocal | A `ThreadLocal` that contains the current `Txn`.
TxnThreadLocal.Container |

Enum Summary
Enum | Description
--- | ---
IsolationLevel | With the IsolationLevel you have a way to provide declarative control to guarantee isolation between transactions.
LockMode | Using the LockMode one can control the pessimistic nature of a `Txn`.
PropagationLevel | With the PropagationLevel you have control on how the `TxnExecutor` reacts on the existence or the non existence of a `Txn`.
TraceLevel | Using the TraceLevel you get some feedback on what is happening inside a transaction.
TxnStatus | An enumeration of all possible states a `Txn` can have.