diff --git a/whatsmars-common/src/test/java/org/hongxi/java/util/concurrent/LockSupportTest.java b/whatsmars-common/src/test/java/org/hongxi/java/util/concurrent/LockSupportTest.java index 16fcaa6462c3dd3f4fadabc6a66843ca5d8fe6e3..a549e34a4f728c88d98d2a362a9dca2c82165610 100644 --- a/whatsmars-common/src/test/java/org/hongxi/java/util/concurrent/LockSupportTest.java +++ b/whatsmars-common/src/test/java/org/hongxi/java/util/concurrent/LockSupportTest.java @@ -8,10 +8,14 @@ import java.util.concurrent.locks.LockSupport; public class LockSupportTest { public static void main(String[] args) { - Object blocker = new Object(); Thread t = new Thread(() -> { System.out.println(System.currentTimeMillis()); - LockSupport.park(blocker); + /** + * 默认情况下调用线程是不持有许可证的,这里会阻塞。 + * 因调用park()方法而被阻塞的线程被其他线程中断而返回时并不会抛出InterruptedException异常。 + * 使用带有blocker参数的park方法,线程堆栈可以提供更多有关阻塞对象的信息。 + */ + LockSupport.park(new LockSupportTest()); System.out.println(System.currentTimeMillis()); }); t.start(); diff --git a/whatsmars-common/src/test/java/org/hongxi/java/util/concurrent/LockSupportTest2.java b/whatsmars-common/src/test/java/org/hongxi/java/util/concurrent/LockSupportTest2.java new file mode 100644 index 0000000000000000000000000000000000000000..f9edd2bff9e3108cce3f774e7116e1a4cb9278eb --- /dev/null +++ b/whatsmars-common/src/test/java/org/hongxi/java/util/concurrent/LockSupportTest2.java @@ -0,0 +1,16 @@ +package org.hongxi.java.util.concurrent; + +import java.util.concurrent.locks.LockSupport; + +/** + * @author shenhongxi 2019/09/01 + */ +public class LockSupportTest2 { + + public static void main(String[] args) { + System.out.println("begin park!"); + LockSupport.unpark(Thread.currentThread()); + LockSupport.park(); + System.out.println("end park!"); + } +}