文章目录
什么是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)方法具体含义:阻塞当前