LockSupport

8 篇文章 0 订阅

LockSupport

LockSupport定义了一组公共的静态方法,提供了最基本的线程阻塞和唤醒功能,LockSupport也是构建同步组件(AQS)的基础工具。

park开头的方法用来阻塞当前线程,以及unpark(Thread thread)方法来唤醒一个被阻塞的线程。

方法

方法描述
void unpark(Thread thread)唤醒处于阻塞状态的线程
void park()阻塞当前线程,调用 unpark 方法或者当前线程被中断,才能从 park 方法返回
void parkNanos(long nanos)阻塞当前线程,最长不超过 nanos 纳秒,返回条件在 park 的基础上增加了超时返回
void parkUntil(long deadline)阻塞当前线程,直到 deadline 时间(从1970年开始到 deadline 时间的毫秒数)

JDK 6中增加了park(Object blocker)parkNanos(Object blocker, long nanos)parkUntil(Object blocker, long deadline)3个方法,也是用于阻塞当前线程,其中参数blocker用于表示当前线程在等待的对象,主要用于问题排查和系统监控。

通过setBlocker(Thread t, Object arg)方法将blocker变量存放到当前线程的parkBlocker成员变量中。

示例

public class LockSupportTest {
   public static void main(String[] args) throws InterruptedException {
      Thread thread = new Thread(() -> {
         System.out.println("Child thread begin park");
         LockSupport.park();
         System.out.println("child thread unpark");
      });
      thread.start();
      Thread.sleep(1000);
      LockSupport.unpark(thread);
      // thread.interrupt();
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值