From 91e065f657c158e7fba090046e47e6def9dbeca0 Mon Sep 17 00:00:00 2001 From: LamGC Date: Sat, 13 Jun 2020 12:54:17 +0800 Subject: [PATCH] =?UTF-8?q?[Change]=20ImageCacheStore=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=B8=AD=E6=96=AD=E5=A4=84=E7=90=86,=20=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E4=BB=BB=E5=8A=A1,=20=E8=A1=A5=E5=85=85TaskS?= =?UTF-8?q?tate=E8=AE=BE=E7=BD=AE;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lamgc/cgj/bot/cache/ImageCacheStore.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/lamgc/cgj/bot/cache/ImageCacheStore.java b/src/main/java/net/lamgc/cgj/bot/cache/ImageCacheStore.java index e3363c2..7763076 100644 --- a/src/main/java/net/lamgc/cgj/bot/cache/ImageCacheStore.java +++ b/src/main/java/net/lamgc/cgj/bot/cache/ImageCacheStore.java @@ -66,17 +66,17 @@ public final class ImageCacheStore { // 置任务状态 task.taskState.set(TaskState.RUNNING); - Throwable throwable = null; + Future future = imageCacheExecutor.submit(() -> { + try { + handler.getImageToCache(cacheObject); + } catch (Throwable e) { + return e; + } + return null; + }); + Throwable throwable; try { - throwable = imageCacheExecutor.submit(() -> { - try { - handler.getImageToCache(cacheObject); - } catch (Throwable e) { - return e; - } - return null; - }).get(); - + throwable = future.get(); if(throwable == null) { task.taskState.set(TaskState.COMPLETE); } else { @@ -84,6 +84,12 @@ public final class ImageCacheStore { } } catch (ExecutionException e) { log.error("执行图片缓存任务时发生异常", e); + task.taskState.set(TaskState.ERROR); + return e.getCause(); + } catch (InterruptedException e) { + future.cancel(true); + task.taskState.set(TaskState.ERROR); + throw e; } return throwable; } finally {