您当前的位置: 首页 > 

庄小焱

暂无认证

  • 2浏览

    0关注

    805博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

JDK源码——StampedLock类

庄小焱 发布时间:2021-04-02 12:54:11 ,浏览量:2

摘要

在多线程开发中,为了控制线程同步,使用最多的莫过于synchronized Lock volatile……等关键字和重入锁。在JDK8中又引入了一款新式武器StampedLock(乐观锁的一种实现)。

StampedLock的实现

面对临界区资源管理的问题,大体上有2套思路:

  • 第一就是使用悲观的策略,悲观者这样认为:在每一次访问临界区的共享变量,总是有人会和我冲突,因此,每次访问我必须先锁住整个对象,完成访问后再解锁。
  • 而与之相反的乐天派却认为,虽然临界区的共享变量会冲突,但是冲突应该是小概率事件,大部分情况下,应该不会发生,所以,我可以先访问了再说,如果等我用完了数据还没人冲突,那么我的操作就是成功;如果我使用完成后,发现有人冲突,那么我要么再重试一次,要么切换为悲观的策略。

从这里不难看到,重入锁以及synchronized 是一种典型的悲观策略。聪明的你一定也猜到了,StampedLock就是提供了一种乐观锁的工具,因此,它是对重入锁的一个重要的补充。

StampedLock的基本使用

在StampedLock的文档中就提供了一个非常好的例子,让我们可以很快的理解StampedLock的使用。下面让我看一下这个例子,有关它的说明,都写在注释中了。

博文参考
关注
打赏
1657692713
查看更多评论
立即登录/注册

微信扫码登录

0.0402s