深入浅析ReentrantLock的实现原理-创新互联

创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

我们提供的服务有:网站设计制作、成都网站设计、微信公众号开发、网站优化、网站认证、长安ssl等。为上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的长安网站制作公司

深入浅析ReentrantL中实现ock的原理?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

1 synchronized和lock

    1.1 synchronized的局限性
    1.2 Lock简介

2 AQS

3 lock()与unlock()实现原理

    3.1 基础知识
    3.2 内部结构
    3.3 NonfairSync
    3.3.1 lock()
    3.3.2 unlock()
    3.3.3 小结
    3.4 FairSync

4 超时机制

5 总结

1 synchronized和lock

1.1 synchronized的局限性

synchronized是java内置的关键字,它提供了一种独占的加锁方式。synchronized的获取和释放锁由JVM实现,用户不需要显示的释放锁,非常方便。然而synchronized也有一定的局限性,例如:

当线程尝试获取锁的时候,如果获取不到锁会一直阻塞。

如果获取锁的线程进入休眠或者阻塞,除非当前线程异常,否则其他线程尝试获取锁必须一直等待。

JDK1.5之后发布,加入了Doug Lea实现的concurrent包。包内提供了Lock类,用来提供更多扩展的加锁功能。Lock弥补了synchronized的局限,提供了更加细粒度的加锁功能。

1.2 Lock简介

Lock api如下

void lock();
void lockInterruptibly() throws InterruptedException;
boolean tryLock();
boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
void unlock();
Condition newCondition();

分享标题:深入浅析ReentrantLock的实现原理-创新互联
本文链接:http://hbruida.cn/article/dishdg.html