diff --git a/CHANGELOG.md b/CHANGELOG.md index eba4a2309..f82930309 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ ### 🐞Bug修复 * 【db 】 修复Oracle下别名错误造成的SQL语法啊错误(issue#I3VTQW@Gitee) +* 【core 】 修复ConcurrencyTester重复使用时开始测试未清空之前任务的问题(issue#I3VSDO@Gitee) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/thread/ConcurrencyTester.java b/hutool-core/src/main/java/cn/hutool/core/thread/ConcurrencyTester.java index 252294a70..9b53d4f34 100644 --- a/hutool-core/src/main/java/cn/hutool/core/thread/ConcurrencyTester.java +++ b/hutool-core/src/main/java/cn/hutool/core/thread/ConcurrencyTester.java @@ -37,6 +37,8 @@ public class ConcurrencyTester { * @return this */ public ConcurrencyTester test(Runnable runnable) { + this.sf.clearWorker(); + timeInterval.start(); this.sf// .addRepeatWorker(runnable)// @@ -47,6 +49,23 @@ public class ConcurrencyTester { return this; } + /** + * 重置测试器,重置包括: + * + * + * + * @return this + * @since 5.7.2 + */ + public ConcurrencyTester reset(){ + this.sf.clearWorker(); + this.timeInterval.restart(); + return this; + } + /** * 获取执行时间 * diff --git a/hutool-core/src/main/java/cn/hutool/core/thread/SyncFinisher.java b/hutool-core/src/main/java/cn/hutool/core/thread/SyncFinisher.java index 8207b5aa8..18ad5fad5 100644 --- a/hutool-core/src/main/java/cn/hutool/core/thread/SyncFinisher.java +++ b/hutool-core/src/main/java/cn/hutool/core/thread/SyncFinisher.java @@ -197,6 +197,9 @@ public class SyncFinisher { } } + /** + * 任务内容 + */ public abstract void work(); } } diff --git a/hutool-core/src/test/java/cn/hutool/core/thread/ConcurrencyTesterTest.java b/hutool-core/src/test/java/cn/hutool/core/thread/ConcurrencyTesterTest.java index 9a8fa2588..d6d1a0f20 100644 --- a/hutool-core/src/test/java/cn/hutool/core/thread/ConcurrencyTesterTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/thread/ConcurrencyTesterTest.java @@ -1,10 +1,10 @@ package cn.hutool.core.thread; -import org.junit.Ignore; -import org.junit.Test; - +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Console; import cn.hutool.core.util.RandomUtil; +import org.junit.Ignore; +import org.junit.Test; public class ConcurrencyTesterTest { @@ -18,4 +18,19 @@ public class ConcurrencyTesterTest { }); Console.log(tester.getInterval()); } + + @Test + @Ignore + public void multiTest(){ + ConcurrencyTester ct = new ConcurrencyTester(5); + for(int i=0;i<3;i++){ + Console.log("开始执行第{}个",i); + ct.test(() -> { + // 需要并发测试的业务代码 + Console.log("当前执行线程:" + Thread.currentThread().getName()+" 产生时间 "+ DateUtil.now()); + ThreadUtil.sleep(RandomUtil.randomInt(1000, 3000)); + }); + } + Console.log("全部线程执行完毕 "+DateUtil.now()); + } }