Package org.eclipse.aether
Interface SyncContext
- All Superinterfaces:
AutoCloseable
,Closeable
A synchronization context used to coordinate concurrent access to artifacts or metadatas. The typical usage of a
synchronization context looks like this:
SyncContext syncContext = repositorySystem.newSyncContext( ... ); try { syncContext.acquire( artifacts, metadatas ); // work with the artifacts and metadatas } finally { syncContext.close(); }Within one thread, synchronization contexts may be nested which can naturally happen in a hierarchy of method calls. The nested synchronization contexts may also acquire overlapping sets of artifacts/metadatas as long as the following conditions are met. If the outer-most context holding a particular resource is exclusive, that resource can be reacquired in any nested context. If however the outer-most context is shared, the resource may only be reacquired by nested contexts if these are also shared.
A synchronization context is meant to be utilized by only one thread and as such is not thread-safe.
Note that the level of actual synchronization is subject to the implementation and might range from OS-wide to none.
-
Method Summary
Modifier and TypeMethodDescriptionvoid
acquire
(Collection<? extends Artifact> artifacts, Collection<? extends Metadata> metadatas) Acquires synchronized access to the specified artifacts and metadatas.void
close()
Releases all previously acquired artifacts/metadatas.
-
Method Details
-
acquire
Acquires synchronized access to the specified artifacts and metadatas. The invocation will potentially block until all requested resources can be acquired by the calling thread. Acquiring resources that are already acquired by this synchronization context has no effect. Please also see the class-level documentation for information regarding reentrancy. The method may be invoked multiple times on a synchronization context until all desired resources have been acquired.- Parameters:
artifacts
- The artifacts to acquire, may benull
or empty if none.metadatas
- The metadatas to acquire, may benull
or empty if none.
-
close
void close()Releases all previously acquired artifacts/metadatas. If no resources have been acquired before or if this synchronization context has already been closed, this method does nothing.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-