Java多线程系列(五)—LockSupport源码分析
LockSupport类是实现锁机制和其他同步类的基础,提供了基本线程阻塞和恢复的原语;
LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程,而且park()和unpark()不会遇到“Thread.suspend 和 Thread.resume所可能引发的死锁”问题
个人主页:tuzhenyu’s page
原文地址:Java多线程系列(五)—LockSupport源码分析
(1) LockSupport类的属性
- 在类加载时进行初始化,主要包括Unsafe类实例和各个字段在Thread类中的内存偏移量;
private static final sun.misc.Unsafe UNSAFE;
private static final long parkBlockerOffset;
private static final long SEED;
private static final long PROBE;
private static final long SECONDARY;
static {
try {
UNSAFE = sun.misc.Unsafe.getUnsafe(); //获取Unsafe实例
Class<?> tk = Thread.class;
parkBlockerOffset = UNSAFE.objectFieldOffset
(tk.getDeclaredField("parkBlocker")); //获取类属性parkBlocker在Thread类中的偏移量;
SEED = UNSAFE.objectFieldOffset
(tk.getDeclaredField(