From 23bbd1f15968018706cdfa3d34a0ad89ec011115 Mon Sep 17 00:00:00 2001 From: antares <1716607668@qq.com> Date: Thu, 13 Nov 2025 17:30:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DBUG:=20DataManagerTest?= =?UTF-8?q?=E4=B8=ADworker=E7=9A=84uidsLock=E6=9C=AA=E9=87=8A=E6=94=BE?= =?UTF-8?q?=EF=BC=8C=E5=AF=BC=E8=87=B4testDMMulti=E5=8D=A1=E6=AD=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mydb/backend/dm/DataManagerTest.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/test/java/top/guoziyang/mydb/backend/dm/DataManagerTest.java b/src/test/java/top/guoziyang/mydb/backend/dm/DataManagerTest.java index 141a94f..6de46ae 100644 --- a/src/test/java/top/guoziyang/mydb/backend/dm/DataManagerTest.java +++ b/src/test/java/top/guoziyang/mydb/backend/dm/DataManagerTest.java @@ -56,14 +56,19 @@ private void worker(DataManager dm0, DataManager dm1, int tasksNum, int insertRa uids1.add(u1); uidsLock.unlock(); } else { + long u0, u1; uidsLock.lock(); - if(uids0.size() == 0) { + try { + if (uids0.size() == 0) { + continue; + } + int tmp = Math.abs(random.nextInt()) % uids0.size(); + u0 = uids0.get(tmp); + u1 = uids1.get(tmp); + } finally { uidsLock.unlock(); - continue; } - int tmp = Math.abs(random.nextInt()) % uids0.size(); - long u0 = uids0.get(tmp); - long u1 = uids1.get(tmp); + DataItem data0 = null, data1 = null; try { data0 = dm0.read(u0); @@ -124,6 +129,8 @@ public void testDMMulti() throws InterruptedException { for(int i = 0; i < 10; i ++) { Runnable r = () -> worker(dm0, mdm, tasksNum, 50, cdl); new Thread(r).run(); + // 真正的多线程 + // new Thread(r).start(); } cdl.await(); dm0.close(); mdm.close();