Advertisement

Java并发包中的锁解析原理

阅读量:

LockSupport工具类解析

LockSupport是JUC并发包中的一个实用工具类,其核心实现依赖于Unsafe类。该工具类在Unsafe类提供的park()与unpark()方法基础上进行封装与功能扩展,主要应用于线程的阻塞与唤醒操作,具备线程安全特性,其底层机制基于CAS算法实现。从名称即可推测,它属于锁相关功能的支持类,后续各类锁的实现均以它为基础。
park()方法与wait()方法
首先分析wait()方法与Unsafe类中的park()方法之间的关系。LockSupport的park()方法本质上是对Unsafe类中park()方法的封装处理,因此有必要先理解底层实际用于阻塞线程的park()方法实现原理。
Object类中wait()方法的源代码:

复制代码
    public final void wait() throws InterruptedException {
        wait(0);
    }
    public final native void wait(long timeout) throws InterruptedException;    
    
    
      
      
      
      
    

Unsafe类中park()方法的源代码实现:

复制代码

全部评论 (0)

还没有任何评论哟~