From de3e1c8e83304de0a3ba73dfbc4703f522239df0 Mon Sep 17 00:00:00 2001 From: youpaishidifu Date: Tue, 23 Jun 2026 00:42:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BA=93=E5=AD=98=E9=AB=98?= =?UTF-8?q?=E9=A2=91=E6=8B=89=E5=8F=96=E9=98=9F=E5=88=97=E7=A7=AF=E5=8E=8B?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=9A=E6=B7=BB=E5=8A=A0=E5=8E=BB=E9=87=8D?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=EF=BC=8C=E9=81=BF=E5=85=8D=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=9B=B8=E5=90=8C=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Sdf1_login/WebManager.java | 32 ++++++++++++++---------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/main/java/Sdf1_login/WebManager.java b/src/main/java/Sdf1_login/WebManager.java index 71fa39d..e567e71 100644 --- a/src/main/java/Sdf1_login/WebManager.java +++ b/src/main/java/Sdf1_login/WebManager.java @@ -92,6 +92,8 @@ public class WebManager { private final AtomicInteger dbTaskIdGen = new AtomicInteger(0); private final AtomicBoolean dbWorkerRunning = new AtomicBoolean(false); private Thread dbWorkerThread; + // 库存高频拉取去重标志 + private final AtomicBoolean stockFastPollTaskPending = new AtomicBoolean(false); public WebManager(Main plugin) { this.plugin = plugin; @@ -1017,20 +1019,24 @@ public class WebManager { } } - // ★ 拉取并应用库存,通过DB队列串行化 - final long finalServerLastModified = serverLastModified; - submitNormalDbTask("库存高频拉取", () -> { - shopStockPulling = true; - try { - boolean applied = pullShopStockSync(); - if (applied && finalServerLastModified > 0) { - lastKnownShopStockModified = finalServerLastModified; + // ★ 去重检查:如果已有库存高频拉取任务在队列中等待,则跳过本次提交 + if (stockFastPollTaskPending.compareAndSet(false, true)) { + // ★ 拉取并应用库存,通过DB队列串行化 + final long finalServerLastModified = serverLastModified; + submitNormalDbTask("库存高频拉取", () -> { + shopStockPulling = true; + try { + boolean applied = pullShopStockSync(); + if (applied && finalServerLastModified > 0) { + lastKnownShopStockModified = finalServerLastModified; + } + // applied=false → 不更新lastKnownShopStockModified → 下次重试 + } finally { + shopStockPulling = false; + stockFastPollTaskPending.set(false); } - // applied=false → 不更新lastKnownShopStockModified → 下次重试 - } finally { - shopStockPulling = false; - } - }); + }); + } } } catch (Exception e) {