mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-28 22:47:41 +02:00
Fix acquisition of newly instantiated entities
This commit is contained in:
parent
e00b3a6fba
commit
07471a8b5b
@ -8,6 +8,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
@ -60,7 +61,7 @@ public final class Acquirable<T> {
|
||||
public boolean tryAcquire(@NotNull Consumer<@NotNull T> consumer) {
|
||||
final Thread currentThread = Thread.currentThread();
|
||||
final BatchThread elementThread = getHandler().getBatchThread();
|
||||
if (elementThread == null || elementThread == currentThread) {
|
||||
if (Objects.equals(currentThread, elementThread)) {
|
||||
consumer.accept(unwrap());
|
||||
return true;
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ public final class Acquisition {
|
||||
*/
|
||||
protected static void acquire(@NotNull Thread currentThread, @Nullable BatchThread elementThread,
|
||||
@NotNull Runnable callback) {
|
||||
if (elementThread == null || elementThread == currentThread) {
|
||||
if (Objects.equals(currentThread, elementThread)) {
|
||||
callback.run();
|
||||
} else {
|
||||
|
||||
@ -101,8 +101,8 @@ public final class Acquisition {
|
||||
if (currentAcquired)
|
||||
current.monitor.enter();
|
||||
|
||||
final var monitor = elementThread.monitor;
|
||||
final boolean acquired = monitor.isOccupiedByCurrentThread();
|
||||
final var monitor = elementThread != null ? elementThread.monitor : null;
|
||||
final boolean acquired = monitor == null || monitor.isOccupiedByCurrentThread();
|
||||
if (!acquired) {
|
||||
monitor.enter();
|
||||
}
|
||||
@ -114,6 +114,7 @@ public final class Acquisition {
|
||||
}
|
||||
|
||||
callback.run();
|
||||
|
||||
if (!acquired) {
|
||||
monitor.leave();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user