From 1f7e03a270ce8f7dbe302617fc60c5f42fe55b86 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sat, 4 Jan 2020 16:51:25 +0100 Subject: [PATCH] Possibly fixes #1346 and other concurrency issues --- CHANGELOG.md | 1 + .../Slimefun/api/TickerTask.java | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04192de72..180a6f3bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,6 +87,7 @@ https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/#4 * Fixed #1344 * Fixed #1349 * Fixed #1332 +* Fixed #1356 and maybe other concurrency issues ## Release Candidate 3 (21 Nov 2019) https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/#3 diff --git a/src/main/java/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/main/java/me/mrCookieSlime/Slimefun/api/TickerTask.java index 6eaff631d..ba9326915 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -9,6 +9,8 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import java.util.logging.Level; import java.util.stream.Collectors; @@ -35,9 +37,9 @@ public class TickerTask implements Runnable { private boolean halted = false; - protected final Map move = new HashMap<>(); - protected final Map delete = new HashMap<>(); - private final Map blockTimings = new HashMap<>(); + protected final ConcurrentMap move = new ConcurrentHashMap<>(); + protected final ConcurrentMap delete = new ConcurrentHashMap<>(); + private final ConcurrentMap blockTimings = new ConcurrentHashMap<>(); private final Set tickers = new HashSet<>(); @@ -46,12 +48,12 @@ public class TickerTask implements Runnable { private int machines = 0; private long time = 0; - private final Map chunkItemCount = new HashMap<>(); - private final Map machineCount = new HashMap<>(); - private final Map machineTimings = new HashMap<>(); - private final Map chunkTimings = new HashMap<>(); + private final ConcurrentMap chunkItemCount = new ConcurrentHashMap<>(); + private final ConcurrentMap machineCount = new ConcurrentHashMap<>(); + private final ConcurrentMap machineTimings = new ConcurrentHashMap<>(); + private final ConcurrentMap chunkTimings = new ConcurrentHashMap<>(); private final Set chunksSkipped = new HashSet<>(); - private final Map buggedBlocks = new HashMap<>(); + private final ConcurrentMap buggedBlocks = new ConcurrentHashMap<>(); private boolean running = false; @@ -77,7 +79,7 @@ public class TickerTask implements Runnable { machineTimings.clear(); blockTimings.clear(); - final Map bugged = new HashMap<>(buggedBlocks); + Map bugged = new HashMap<>(buggedBlocks); buggedBlocks.clear(); Map remove = new HashMap<>(delete);