Distributed Locks
Overview
Ignite transactions acquire distributed locks implicitly. However, there are certain use cases when you might need to
acquire the locks explicitly. The lock()
method of the IgniteCache
API returns an instance of java.util.concurrent.locks.Lock
that lets you define explicit distributed locks for any given key. Locks can also be acquired on a collection of objects using the
IgniteCache.lockAll()
method.
IgniteCache<String, Integer> cache = ignite.cache("myCache");
// Create a lock for the given key
Lock lock = cache.lock("keyLock");
try {
// Acquire the lock
lock.lock();
cache.put("Hello", 11);
cache.put("World", 22);
}
finally {
// Release the lock
lock.unlock();
}
Note
|
Atomicity ModeIn Ignite, locks are supported only for the |
Locks and Transactions
Explicit locks are not transactional and cannot not be used from within transactions (exception will be thrown).
If you do need explicit locking within transactions, then you should use the TransactionConcurrency.PESSIMISTIC
concurrency
control for transactions which will acquire explicit locks for relevant cluster data requests.
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.