Package net.bytebuddy.agent.builder
Class AgentBuilder.CircularityLock.Default
- java.lang.Object
-
- net.bytebuddy.agent.builder.AgentBuilder.CircularityLock.WithInnerClassLoadingLock
-
- net.bytebuddy.agent.builder.AgentBuilder.CircularityLock.Default
-
- All Implemented Interfaces:
AgentBuilder.CircularityLock
- Enclosing interface:
- AgentBuilder.CircularityLock
public static class AgentBuilder.CircularityLock.Default extends AgentBuilder.CircularityLock.WithInnerClassLoadingLock
A default implementation of a circularity lock. Since class loading already synchronizes on a class loader, it suffices to apply a thread-local lock.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class net.bytebuddy.agent.builder.AgentBuilder.CircularityLock.WithInnerClassLoadingLock
AgentBuilder.CircularityLock.WithInnerClassLoadingLock.TrivialLock
-
Nested classes/interfaces inherited from interface net.bytebuddy.agent.builder.AgentBuilder.CircularityLock
AgentBuilder.CircularityLock.Default, AgentBuilder.CircularityLock.Global, AgentBuilder.CircularityLock.Inactive, AgentBuilder.CircularityLock.WithInnerClassLoadingLock
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.ConcurrentMap<java.lang.Thread,java.lang.Boolean>threadsA map of threads to an unused boolean to emulate a thread-local state without using thread locals.-
Fields inherited from class net.bytebuddy.agent.builder.AgentBuilder.CircularityLock.WithInnerClassLoadingLock
DEFAULT_SIZE
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleandoAcquire()Acquires the actual lock for the current thread.protected booleanisLocked()Returnstrueif the current thread is currently locked.voidrelease()Releases the circularity lock if it is currently acquired.-
Methods inherited from class net.bytebuddy.agent.builder.AgentBuilder.CircularityLock.WithInnerClassLoadingLock
acquire
-
-
-
-
Field Detail
-
threads
private final java.util.concurrent.ConcurrentMap<java.lang.Thread,java.lang.Boolean> threads
A map of threads to an unused boolean to emulate a thread-local state without using thread locals. This avoids using thread-local maps and does not interfere with Java fibers in case that an instrumentation is executed from a virtual thread where thread locals are not permitted.
-
-
Constructor Detail
-
Default
public Default()
Creates a default lock with a default size for the amount of global locks.
-
Default
public Default(int size)
Creates a default lock with the supplied number of global locks.- Parameters:
size- The amount of locks used in parallel or0if no global locks should be used.
-
-
Method Detail
-
doAcquire
protected boolean doAcquire()
Description copied from class:AgentBuilder.CircularityLock.WithInnerClassLoadingLockAcquires the actual lock for the current thread.- Specified by:
doAcquirein classAgentBuilder.CircularityLock.WithInnerClassLoadingLock- Returns:
trueif the lock was acquired successfully,falseif it is already hold.
-
release
public void release()
Releases the circularity lock if it is currently acquired.
-
isLocked
protected boolean isLocked()
Returnstrueif the current thread is currently locked.- Returns:
trueif the current thread is currently locked.
-
-