diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FetchTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FetchTask.java index ecc1041f6..c8b459ecb 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FetchTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/FetchTask.java @@ -51,7 +51,7 @@ public abstract class FetchTask extends Task { this.urls = new ArrayList<>(urls); this.retry = retry; - setExecutor(Schedulers.io()); + setExecutor(download()); } public void setCaching(boolean caching) { @@ -278,7 +278,8 @@ public abstract class FetchTask extends Task { if (DOWNLOAD_EXECUTOR == null) { synchronized (Schedulers.class) { if (DOWNLOAD_EXECUTOR == null) { - DOWNLOAD_EXECUTOR = new ThreadPoolExecutor(0, downloadExecutorConcurrency, 10, TimeUnit.SECONDS, new SynchronousQueue<>(), + DOWNLOAD_EXECUTOR = new ThreadPoolExecutor(0, downloadExecutorConcurrency, 10, TimeUnit.SECONDS, + new LinkedBlockingQueue<>(), runnable -> { Thread thread = Executors.defaultThreadFactory().newThread(runnable); thread.setDaemon(true); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java index b53cab186..7c816a546 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java @@ -47,7 +47,8 @@ public final class Schedulers { if (IO_EXECUTOR == null) { synchronized (Schedulers.class) { if (IO_EXECUTOR == null) { - IO_EXECUTOR = new ThreadPoolExecutor(0, 4, 10, TimeUnit.SECONDS, new SynchronousQueue<>(), + IO_EXECUTOR = new ThreadPoolExecutor(0, 4, 10, TimeUnit.SECONDS, + new LinkedBlockingQueue<>(), runnable -> { Thread thread = Executors.defaultThreadFactory().newThread(runnable); thread.setDaemon(true);