多线程之LockSupport,线程阻塞与唤醒(十四)

LockSupport是创建锁和其他同步类的基础线程阻塞原语,每个线程关联一个许可。核心方法park()用于阻塞线程,unpark(Thread thread)用于唤醒线程。许可默认为0,park()调用会阻塞,unpark()会设置许可为1唤醒线程。通过实践案例展示了LockSupport如何实现线程间的阻塞与唤醒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是LockSupport

LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。

该类与使用它的每个线程关联一个许可证(与Semaphore类的意义上类似)。 如果许可证可用,将立即返回park ,并在此过程中消费; 否则可能会阻止。 如果尚未提供许可,则需要unpark获得许可。 (与Semaphore不同,许可证不会累积。最多只有一个。)

看到上面的解释一头雾水,说人话:

LockSupport类使用了一种名为permit(许可)的概念来做到阻塞和唤醒线程的功能,每个线程都有一个许可(permit),permit只有两个值1和0,默认是0,可以把许可看成是一种(0,1)信号量(Semaphore),但是Semaphore不同的是,LockSupport许可的累加上限是1。

最核心的主要有两个方法:park()和unpark(),通过park()和unpark(thread)方法来实现阻塞和唤醒线程。

下面我们看一下LockSupport的两个核心方法和其他方法。

主要方法

park()

具体含义

park()/park(Object blocker)方法具体含义:阻塞当前

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿小亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值