Fix acquisition of newly instantiated entities

This commit is contained in:
TheMode 2021-04-18 17:31:50 +02:00
parent e00b3a6fba
commit 07471a8b5b
2 changed files with 6 additions and 4 deletions

View File

@ -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;
}

View File

@ -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();
}