Quick Stem provides a simple, fast, and lightweight Software Transactional
Memory (STM) API for Java. Programmers can wrap a value in a Stem,
and then via access to the Stem's get and set methods, ensure that all
access to the value is transactional.
Transactions can be started, and only commited transactions values will be
visible to other transactions. Commit and rollback are constant time
operations.
Quick Stem provides all four ACID transaction isolation levels,
Read-Uncommited, Read-Commited, Repeatable-Read, and Serializable. The
last of which is provided via restartable transactions.
Quick Stem's values are completely non-locking and non-blocking. Concurrent
readers and writers never block.
Finally, Quick Stem provides a set of basic Java collections which are also
transactional. Individual transactions view both different contents and
structure of the collections based on transaction visibility.