From 8b7d621cd7ef31591b08ee03aebd9e49fbf261a9 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 9 Jun 2025 16:57:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D`ThreadUtil`=E4=B8=AD?= =?UTF-8?q?=E4=B8=AD=E6=96=AD=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=E4=B8=A2?= =?UTF-8?q?=E5=A4=B1=E4=B8=AD=E6=96=AD=E4=BF=A1=E6=81=AF=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E8=A7=A3=E5=86=B3ConcurrencyTester=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E6=9C=AA=E9=87=8A=E6=94=BE=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=88pr#1358@Gitee=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hutool/v7/core/thread/ThreadUtil.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/v7/core/thread/ThreadUtil.java b/hutool-core/src/main/java/cn/hutool/v7/core/thread/ThreadUtil.java index 5d641fefd..a99ef8077 100644 --- a/hutool-core/src/main/java/cn/hutool/v7/core/thread/ThreadUtil.java +++ b/hutool-core/src/main/java/cn/hutool/v7/core/thread/ThreadUtil.java @@ -16,8 +16,10 @@ package cn.hutool.v7.core.thread; +import cn.hutool.v7.core.io.IORuntimeException; import cn.hutool.v7.core.util.RuntimeUtil; +import java.io.IOException; import java.lang.Thread.UncaughtExceptionHandler; import java.time.Duration; import java.util.concurrent.Callable; @@ -443,6 +445,8 @@ public class ThreadUtil { try { timeUnit.sleep(timeout.longValue()); } catch (final InterruptedException e) { + // pr#1358 重新标记线程为中断状态(恢复中断信息),让后续代码能感知到“线程曾被中断过” + Thread.currentThread().interrupt(); return false; } return true; @@ -487,6 +491,8 @@ public class ThreadUtil { try { Thread.sleep(millis); } catch (final InterruptedException e) { + // pr#1358 重新标记线程为中断状态(恢复中断信息),让后续代码能感知到“线程曾被中断过” + Thread.currentThread().interrupt(); return false; } } @@ -708,8 +714,7 @@ public class ThreadUtil { * @since 3.1.2 */ public static ThreadGroup currentThreadGroup() { - final SecurityManager s = System.getSecurityManager(); - return (null != s) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup(); + return Thread.currentThread().getThreadGroup(); } /** @@ -789,9 +794,12 @@ public class ThreadUtil { * @return {@link ConcurrencyTester} * @since 4.5.8 */ - @SuppressWarnings("resource") public static ConcurrencyTester concurrencyTest(final int threadSize, final Runnable runnable) { - return (new ConcurrencyTester(threadSize)).test(runnable); + try (ConcurrencyTester tester = new ConcurrencyTester(threadSize)) { + return tester.test(runnable); + } catch (IOException e) { + throw new IORuntimeException(e); + } } /**