Package net.minestom.server.thread
Interface Acquirable<T>
@Experimental
public sealed interface Acquirable<T>
-
Method Summary
Modifier and TypeMethodDescription@NotNull TickThreaddefault voidAsync version ofsync(Consumer).Gets all theentitiesbeing ticked in the current thread.default booleanisLocal()Gets if the acquirable element is local to this threadlocal()Retrieves the acquirable value if and only if the element is already present/ticked in the current thread.lock()Returns a newAcquiredobject which will be locked to the current thread.static <T> @NotNull Acquirable<T> of(T value) Creates a newAcquirableobject.static longRetrieve and reset acquiring time.default voidLocks the acquirable element, executeconsumersynchronously and unlock the thread.unwrap()Unwrap the contained object unsafely.
-
Method Details
-
currentEntities
Gets all theentitiesbeing ticked in the current thread.Useful when you want to ensure that no acquisition is ever done.
Be aware that the entity stream is only updated at the beginning of the thread tick.
- Returns:
- the entities ticked in the current thread
-
resetAcquiringTime
@Internal static long resetAcquiringTime()Retrieve and reset acquiring time. -
of
Creates a newAcquirableobject.Mostly for internal use, as a
TickThreadhas to be used and properly synchronized.- Type Parameters:
T- the acquirable element type- Parameters:
value- the acquirable element- Returns:
- a new acquirable object
-
lock
Returns a newAcquiredobject which will be locked to the current thread.Useful when your code cannot be done inside a callback and need to be sync. Do not forget to call
Acquired.unlock()once you are done with it.- Returns:
- an acquired object
- See Also:
-
local
Retrieves the acquirable value if and only if the element is already present/ticked in the current thread.Useful when you want only want to acquire an element when you are guaranteed to do not create a huge performance impact.
- Returns:
- an optional containing the acquired element if safe,
Optional.empty()otherwise
-
isLocal
default boolean isLocal()Gets if the acquirable element is local to this thread- Returns:
- true if the element is linked to the current thread
-
sync
Locks the acquirable element, executeconsumersynchronously and unlock the thread.Free if the element is already present in the current thread, blocking otherwise.
- Parameters:
consumer- the callback to execute once the element has been safely acquired- See Also:
-
async
Async version ofsync(Consumer).- Parameters:
consumer- the callback to execute once the element has been safely acquired- See Also:
-
unwrap
Unwrap the contained object unsafely.Should only be considered when thread-safety is not necessary (e.g. comparing positions)
- Returns:
- the unwrapped value
-
assignedThread
-