From 9dcf6035fea5f7637d5e13b400abd2158b2cc4b7 Mon Sep 17 00:00:00 2001 From: filoghost Date: Sat, 9 Mar 2024 22:51:16 +0100 Subject: [PATCH] Remove duplicate thread initialization --- .../core/tracking/PacketSenderExecutor.java | 22 +++---------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/core/src/main/java/me/filoghost/holographicdisplays/core/tracking/PacketSenderExecutor.java b/core/src/main/java/me/filoghost/holographicdisplays/core/tracking/PacketSenderExecutor.java index 27061055..1111e63e 100644 --- a/core/src/main/java/me/filoghost/holographicdisplays/core/tracking/PacketSenderExecutor.java +++ b/core/src/main/java/me/filoghost/holographicdisplays/core/tracking/PacketSenderExecutor.java @@ -13,37 +13,21 @@ import java.util.concurrent.LinkedBlockingQueue; /** * This is a quick but ugly helper class for creating and sending packets async. * Static classes like this should be avoided. + * Important note: this executor can only have one thread, as packets must be sent in a precise order. */ public class PacketSenderExecutor { private static volatile BlockingQueue tasks; - private static volatile Thread thread; private static final Runnable STOP_MARKER_TASK = () -> {}; - static { - tasks = new LinkedBlockingQueue<>(); - thread = new Thread(() -> { - while (true) { - try { - Runnable task = tasks.take(); - task.run(); - } catch (Throwable t) { - Log.severe("Error in packet sender task", t); - } - } - }); - thread.setName("Holographic Displays async packets"); - thread.start(); - } - public static void execute(Runnable task) { tasks.add(task); } public static void start() { tasks = new LinkedBlockingQueue<>(); - thread = new Thread(() -> { + Thread thread = new Thread(() -> { while (true) { try { Runnable task = tasks.take(); @@ -56,7 +40,7 @@ public class PacketSenderExecutor { } } }); - thread.setName("Holographic Displays packet sender"); + thread.setName("Holographic Displays async packets"); thread.start(); }