Java并发编程—锁机制之LockSupport

LockSupport是一个用于挂起和唤醒线程的工具类,它利用Unsafe内部方法实现。文章详细介绍了park()、parkNanos()、park(Object blocker)等挂起方法,以及unpark(Thread thread)的唤醒方法。在并发编程中,LockSupport常用于线程间的协作。
摘要由CSDN通过智能技术生成

1 概述

是一个工具类,主要作用就是挂起和唤醒线程,内部是调用了Unsafe的方法来实现的,其组成如下图所示。调用LockSupport类的线程会与该类关联一个许可证,默认情况下该类是不持有该许可证的。

 下面对其中的一些主要方法进行介绍

2 挂起线程的方法

2.1 park()

如果调用park()方法的线程已经持有许可证则调用该方法时会立马返回,否则调用该方法的线程会被阻塞挂起。注意因调用park()方法而被阻塞的线程被其他线程中断返回时并不会抛出InterruptedException。

2.2 parkNanos(long nanos)

与park()方法不同之处在于,调用该方法的线程在未持有许可证被挂起后,若在时间nanos没被唤醒也会在nanos时间到后自己返回

2.3 park(Object blocker)

线程类有一个parkObject成员变量,调用该park方法会设置该线程的parkObject成员变量并将该线程挂起。当然,若线程持有许可证也会立马返回。

2.4 parkNanos(Object blocker, long nanos)

与park(Object blocker)方法相比就是多了一个超时时间,到了超时时间会自己返回

2.5 parkUntil(Object blocker, long deadline)

该方法中的deadline计算的是从1970年到现在某一个时间点的毫秒值

3 唤醒线程的方法

unpark(Thread thread)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值