From 12face8167144fba8caae9037e86063ac23254e1 Mon Sep 17 00:00:00 2001 From: Luca Figoli Date: Wed, 28 Apr 2021 09:05:43 +0200 Subject: [PATCH 1/2] Fixed concurrency issue on EventThread class --- .../java/io/socket/thread/EventThread.java | 38 ++++--------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/src/main/java/io/socket/thread/EventThread.java b/src/main/java/io/socket/thread/EventThread.java index 90f7aec7..74307064 100644 --- a/src/main/java/io/socket/thread/EventThread.java +++ b/src/main/java/io/socket/thread/EventThread.java @@ -27,10 +27,7 @@ public Thread newThread(Runnable runnable) { private static EventThread thread; - private static ExecutorService service; - - private static int counter = 0; - + private static final ExecutorService service = Executors.newSingleThreadExecutor(THREAD_FACTORY); private EventThread(Runnable runnable) { super(runnable); @@ -64,33 +61,12 @@ public static void exec(Runnable task) { * @param task */ public static void nextTick(final Runnable task) { - ExecutorService executor; - synchronized (EventThread.class) { - counter++; - if (service == null) { - service = Executors.newSingleThreadExecutor(THREAD_FACTORY); - } - executor = service; - } - - executor.execute(new Runnable() { - @Override - public void run() { - try { - task.run(); - } catch (Throwable t) { - logger.log(Level.SEVERE, "Task threw exception", t); - throw t; - } finally { - synchronized (EventThread.class) { - counter--; - if (counter == 0) { - service.shutdown(); - service = null; - thread = null; - } - } - } + service.execute(() -> { + try { + task.run(); + } catch (Throwable t) { + logger.log(Level.SEVERE, "Task threw exception", t); + throw t; } }); } From eba65705e3d2bea6f2aadf0bee87b8c79e1c7458 Mon Sep 17 00:00:00 2001 From: Luca Figoli Date: Wed, 28 Apr 2021 10:13:31 +0200 Subject: [PATCH 2/2] Removed lambda expression --- src/main/java/io/socket/thread/EventThread.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/socket/thread/EventThread.java b/src/main/java/io/socket/thread/EventThread.java index 74307064..43781e2e 100644 --- a/src/main/java/io/socket/thread/EventThread.java +++ b/src/main/java/io/socket/thread/EventThread.java @@ -61,12 +61,15 @@ public static void exec(Runnable task) { * @param task */ public static void nextTick(final Runnable task) { - service.execute(() -> { - try { - task.run(); - } catch (Throwable t) { - logger.log(Level.SEVERE, "Task threw exception", t); - throw t; + service.execute(new Runnable() { + @Override + public void run() { + try { + task.run(); + } catch (Throwable t) { + logger.log(Level.SEVERE, "Task threw exception", t); + throw t; + } } }); }