From 4f7060dfef3ca2c3e223eb25f40bf9e543610b19 Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Sun, 10 Jan 2021 20:14:36 +0100 Subject: [PATCH] Use GlobalThreadPool in conjunction with CompletableFuture --- .../ui/action/RemoveTimeLimitAction.java | 3 +- .../ctbrec/ui/action/SetStopDateAction.java | 3 +- .../java/ctbrec/ui/settings/SettingsTab.java | 4 +-- .../ui/sites/camsoda/CamsodaShowsTab.java | 29 +++++++++---------- .../main/java/ctbrec/ui/tabs/ThumbCell.java | 5 ++-- .../main/java/ctbrec/ui/tabs/UpdateTab.java | 5 ++-- 6 files changed, 24 insertions(+), 25 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/action/RemoveTimeLimitAction.java b/client/src/main/java/ctbrec/ui/action/RemoveTimeLimitAction.java index fd3e6460..4e86a3c7 100644 --- a/client/src/main/java/ctbrec/ui/action/RemoveTimeLimitAction.java +++ b/client/src/main/java/ctbrec/ui/action/RemoveTimeLimitAction.java @@ -6,6 +6,7 @@ import java.security.NoSuchAlgorithmException; import java.time.Instant; import java.util.concurrent.CompletableFuture; +import ctbrec.GlobalThreadPool; import ctbrec.Model; import ctbrec.recorder.Recorder; import ctbrec.ui.controls.Dialogs; @@ -36,6 +37,6 @@ public class RemoveTimeLimitAction { Dialogs.showError(source.getScene(), "Error", "Couln't remove stop date", e); return false; } - }).whenComplete((r,e) -> source.setCursor(Cursor.DEFAULT)); + }, GlobalThreadPool.get()).whenComplete((r,e) -> source.setCursor(Cursor.DEFAULT)); } } diff --git a/client/src/main/java/ctbrec/ui/action/SetStopDateAction.java b/client/src/main/java/ctbrec/ui/action/SetStopDateAction.java index cd83590e..9e9b6e2e 100644 --- a/client/src/main/java/ctbrec/ui/action/SetStopDateAction.java +++ b/client/src/main/java/ctbrec/ui/action/SetStopDateAction.java @@ -13,6 +13,7 @@ import java.util.concurrent.CompletableFuture; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ctbrec.GlobalThreadPool; import ctbrec.Model; import ctbrec.SubsequentAction; import ctbrec.recorder.Recorder; @@ -82,7 +83,7 @@ public class SetStopDateAction { } } return true; - }).whenComplete((r, e) -> { + }, GlobalThreadPool.get()).whenComplete((r, e) -> { source.setCursor(Cursor.DEFAULT); if (e != null) { LOG.error("Error", e); diff --git a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java index 17d6bf2f..ed3452b9 100644 --- a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java +++ b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java @@ -9,13 +9,13 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ctbrec.Config; +import ctbrec.GlobalThreadPool; import ctbrec.Hmac; import ctbrec.Settings; import ctbrec.Settings.DirectoryStructure; @@ -436,7 +436,7 @@ public class SettingsTab extends Tab implements TabSelectionListener { } public void saveConfig() { - CompletableFuture.runAsync(() -> { + GlobalThreadPool.submit(() -> { try { Config.getInstance().save(); } catch (IOException e) { diff --git a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaShowsTab.java b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaShowsTab.java index 68049c52..206eb205 100644 --- a/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaShowsTab.java +++ b/client/src/main/java/ctbrec/ui/sites/camsoda/CamsodaShowsTab.java @@ -19,6 +19,7 @@ import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ctbrec.GlobalThreadPool; import ctbrec.Model; import ctbrec.recorder.Recorder; import ctbrec.sites.camsoda.Camsoda; @@ -136,7 +137,7 @@ public class CamsodaShowsTab extends Tab implements TabSelectionListener { }); } }; - new Thread(task).start(); + GlobalThreadPool.submit(task); } @Override @@ -180,17 +181,17 @@ public class CamsodaShowsTab extends Tab implements TabSelectionListener { grid.add(createLabel(formatter.format(endTime), false), 1, 1); Button record = new Button("Record Model"); record.setTooltip(new Tooltip(record.getText())); - record.setOnAction((evt) -> record(model)); + record.setOnAction(evt -> record(model)); grid.add(record, 1, 2); GridPane.setMargin(record, new Insets(10)); Button follow = new Button("Follow"); follow.setTooltip(new Tooltip(follow.getText())); - follow.setOnAction((evt) -> follow(model)); + follow.setOnAction(evt -> follow(model)); grid.add(follow, 1, 3); GridPane.setMargin(follow, new Insets(10)); Button openInBrowser = new Button("Open in Browser"); openInBrowser.setTooltip(new Tooltip(openInBrowser.getText())); - openInBrowser.setOnAction((evt) -> DesktopIntegration.open(model.getUrl())); + openInBrowser.setOnAction(evt -> DesktopIntegration.open(model.getUrl())); grid.add(openInBrowser, 1, 4); GridPane.setMargin(openInBrowser, new Insets(10)); root.setCenter(grid); @@ -202,7 +203,7 @@ public class CamsodaShowsTab extends Tab implements TabSelectionListener { private void follow(Model model) { setCursor(Cursor.WAIT); - new Thread(() -> { + GlobalThreadPool.submit(() -> { try { SiteUiFactory.getUi(model.getSite()).login(); model.follow(); @@ -210,30 +211,26 @@ public class CamsodaShowsTab extends Tab implements TabSelectionListener { LOG.error("Couldn't follow model {}", model, e); showErrorDialog("Oh no!", "Couldn't follow model", e.getMessage()); } finally { - Platform.runLater(() -> { - setCursor(Cursor.DEFAULT); - }); + Platform.runLater(() -> setCursor(Cursor.DEFAULT)); } - }).start(); + }); } private void record(Model model) { setCursor(Cursor.WAIT); - new Thread(() -> { + GlobalThreadPool.submit(() -> { try { recorder.addModel(model); } catch (InvalidKeyException | NoSuchAlgorithmException | IllegalStateException | IOException e) { showErrorDialog("Oh no!", "Couldn't add model to the recorder", "Recorder error: " + e.getMessage()); } finally { - Platform.runLater(() -> { - setCursor(Cursor.DEFAULT); - }); + Platform.runLater(() -> setCursor(Cursor.DEFAULT)); } - }).start(); + }); } private void loadImage(Model model, ImageView thumb) { - new Thread(() -> { + GlobalThreadPool.submit(() -> { try { String url = camsoda.getBaseUrl() + "/api/v1/user/" + model.getName(); Request detailRequest = new Request.Builder().url(url).build(); @@ -270,7 +267,7 @@ public class CamsodaShowsTab extends Tab implements TabSelectionListener { } catch (Exception e) { LOG.error("Couldn't load model details", e); } - }).start(); + }); } private Node createLabel(String string, boolean bold) { diff --git a/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java b/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java index 25a36772..20f22702 100644 --- a/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java +++ b/client/src/main/java/ctbrec/ui/tabs/ThumbCell.java @@ -21,6 +21,7 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import ctbrec.Config; +import ctbrec.GlobalThreadPool; import ctbrec.Model; import ctbrec.Model.State; import ctbrec.io.HttpException; @@ -285,7 +286,7 @@ public class ThumbCell extends StackPane { Thread.currentThread().interrupt(); return false; } - }).whenComplete((result, exception) -> { + }, GlobalThreadPool.get()).whenComplete((result, exception) -> { startPreview = null; if (result.booleanValue()) { setPreviewVisible(previewTrigger, true); @@ -587,7 +588,7 @@ public class ThumbCell extends StackPane { } finally { Platform.runLater(() -> setCursor(Cursor.DEFAULT)); } - }); + }, GlobalThreadPool.get()); } void recordLater(boolean recordLater) { diff --git a/client/src/main/java/ctbrec/ui/tabs/UpdateTab.java b/client/src/main/java/ctbrec/ui/tabs/UpdateTab.java index 7dbf38ac..1292f832 100644 --- a/client/src/main/java/ctbrec/ui/tabs/UpdateTab.java +++ b/client/src/main/java/ctbrec/ui/tabs/UpdateTab.java @@ -1,10 +1,9 @@ package ctbrec.ui.tabs; -import java.util.concurrent.CompletableFuture; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ctbrec.GlobalThreadPool; import ctbrec.io.HttpException; import ctbrec.ui.CamrecApplication; import ctbrec.ui.CamrecApplication.Release; @@ -47,7 +46,7 @@ public class UpdateTab extends Tab implements TabSelectionListener { } public void loadChangeLog() { - CompletableFuture.runAsync(() -> { + GlobalThreadPool.submit(() -> { Request req = new Request.Builder().url("https://pastebin.com/raw/fiAPtM0s").build(); try (Response resp = CamrecApplication.httpClient.execute(req)) { if (resp.isSuccessful()) {