work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

LockSupport

Posted on 2022-04-12 13:53  work hard work smart  阅读(33)  评论(0编辑  收藏  举报

LockSupport是JDK中比较底层的类,用来创建锁和其他同步工具类的基本线程阻塞原语。java锁和同步框架AQS:AbstractQueuedSynchronizer,就是通过LockSupport.park() 和 LockSupport.unpark() 实现线程阻塞和唤醒的。

LockSupport 很类似于二元信号量(只有1个许可证可供使用),如果这个许可还没有被占用,当前线程获取许可并继 续 执行;如果许可已经被占用,当前线 程阻塞,等待获取许可。

如下代码所示:

    public static void test1() {
        LockSupport.unpark(Thread.currentThread());
        LockSupport.park();
        System.out.println("block");
    }

  注意: 要先释放许可,再获取许可。