Package org.eclipse.aether.named.support
Class FileLockNamedLock
java.lang.Object
org.eclipse.aether.named.support.NamedLockSupport
org.eclipse.aether.named.support.FileLockNamedLock
- All Implemented Interfaces:
AutoCloseable
,NamedLock
Named lock that uses
FileLock
. An instance of this class is about ONE LOCK (one file)
and is possibly used by multiple threads. Each thread (if properly coded re boxing) will try to
obtain either shared or exclusive lock. As file locks are JVM-scoped (so one JVM can obtain
same file lock only once), the threads share file lock and synchronize according to it. Still,
as file lock obtain operation does not block (or in other words, the method that does block
cannot be controlled for how long it blocks), we are "simulating" thread blocking using
Retry
utility.
This implementation performs coordination not only on thread (JVM-local) level, but also on
process level, as long as other parties are using this same "advisory" locking mechanism.- Since:
- 1.7.3
-
Field Summary
Fields inherited from class org.eclipse.aether.named.support.NamedLockSupport
logger
-
Constructor Summary
ConstructorDescriptionFileLockNamedLock
(String name, FileChannel fileChannel, NamedLockFactorySupport factory) -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
doLockExclusively
(long time, TimeUnit unit) protected boolean
doLockShared
(long time, TimeUnit unit) protected void
doUnlock()
Methods inherited from class org.eclipse.aether.named.support.NamedLockSupport
close, diagnosticState, doClose, lockExclusively, lockShared, name, toString, unlock
-
Constructor Details
-
FileLockNamedLock
-
-
Method Details
-
doLockExclusively
- Specified by:
doLockExclusively
in classNamedLockSupport
- Throws:
InterruptedException
-
doUnlock
- Specified by:
doUnlock
in classNamedLockSupport