From f2bc472f6f5290332c803fda87101b04d5c34077 Mon Sep 17 00:00:00 2001 From: A248 Date: Sat, 23 Nov 2019 10:56:28 -0500 Subject: [PATCH 1/2] Implement proper multi-threading Replace raw Thread instantiation with a thread pool. --- .../main/java/net/jitse/npclib/api/skin/MineSkinFetcher.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/net/jitse/npclib/api/skin/MineSkinFetcher.java b/api/src/main/java/net/jitse/npclib/api/skin/MineSkinFetcher.java index 58316d1..7a9378b 100755 --- a/api/src/main/java/net/jitse/npclib/api/skin/MineSkinFetcher.java +++ b/api/src/main/java/net/jitse/npclib/api/skin/MineSkinFetcher.java @@ -20,9 +20,10 @@ import java.util.Scanner; public class MineSkinFetcher { private static final String MINESKIN_API = "https://api.mineskin.org/get/id/"; + private static final ExecutorService threadPool = Executors.newCachedThreadPool(); public static void fetchSkinFromIdAsync(int id, Callback callback) { - new Thread(() -> { + threadPool.execute(() -> { try { StringBuilder builder = new StringBuilder(); HttpURLConnection httpURLConnection = (HttpURLConnection) new URL(MINESKIN_API + id).openConnection(); @@ -50,7 +51,7 @@ public class MineSkinFetcher { exception.printStackTrace(); callback.failed(); } - }).start(); + }); } public interface Callback { From a9e06eab79894e9541e12057dae6cf6fa5a4d384 Mon Sep 17 00:00:00 2001 From: A248 Date: Sat, 23 Nov 2019 11:07:18 -0500 Subject: [PATCH 2/2] Change thread pool type Replace cached thread pool (Executors.newCachedThreadPool()) with single thread pool (Executors.newSingleThreadExecutor()). The single thread executor is more efficient for lazy asynchronous operations. --- .../main/java/net/jitse/npclib/api/skin/MineSkinFetcher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/main/java/net/jitse/npclib/api/skin/MineSkinFetcher.java b/api/src/main/java/net/jitse/npclib/api/skin/MineSkinFetcher.java index 7a9378b..276283c 100755 --- a/api/src/main/java/net/jitse/npclib/api/skin/MineSkinFetcher.java +++ b/api/src/main/java/net/jitse/npclib/api/skin/MineSkinFetcher.java @@ -20,7 +20,7 @@ import java.util.Scanner; public class MineSkinFetcher { private static final String MINESKIN_API = "https://api.mineskin.org/get/id/"; - private static final ExecutorService threadPool = Executors.newCachedThreadPool(); + private static final ExecutorService threadPool = Executors.newSingleThreadExecutor(); public static void fetchSkinFromIdAsync(int id, Callback callback) { threadPool.execute(() -> {