From cba165983323fe3ffa5576125605c8cf5c586b19 Mon Sep 17 00:00:00 2001 From: VampireAchao Date: Mon, 17 Jan 2022 14:40:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DofTry=E4=B8=AD=E5=B9=B6?= =?UTF-8?q?=E5=8F=91=E7=8E=AF=E5=A2=83=E4=B8=8B=E7=BA=BF=E7=A8=8B=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/hutool/core/lang/Opt.java | 2 +- .../test/java/cn/hutool/core/lang/OptTest.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/Opt.java b/hutool-core/src/main/java/cn/hutool/core/lang/Opt.java index e03ad64cd..dad1b5cd0 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/Opt.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/Opt.java @@ -122,7 +122,7 @@ public class Opt { try { return Opt.ofNullable(supplier.call()); } catch (Exception e) { - final Opt empty = Opt.empty(); + final Opt empty = new Opt<>(null); empty.exception = e; return empty; } diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/OptTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/OptTest.java index 0bdab907d..41d2d19c3 100644 --- a/hutool-core/src/test/java/cn/hutool/core/lang/OptTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/lang/OptTest.java @@ -187,6 +187,21 @@ public class OptTest { Assert.assertEquals(indexOut, indexOutSituation); Assert.assertEquals("hutool", npe); Assert.assertEquals("hutool", indexOut); + + // 多线程下情况测试 + Stream.iterate(0, i -> ++i).limit(20000).parallel().forEach(i -> { + Opt opt = Opt.ofTry(() -> { + if (i % 2 == 0) { + throw new IllegalStateException(i + ""); + } else { + throw new NullPointerException(i + ""); + } + }); + Assert.assertTrue( + (i % 2 == 0 && opt.getException() instanceof IllegalStateException) || + (i % 2 != 0 && opt.getException() instanceof NullPointerException) + ); + }); } @Data