当前位置: 首页 > news >正文

江苏网站建设公司百度店铺

江苏网站建设公司,百度店铺,国外网页模板网站,申请自己的网站ReadWriteLock包括两种子锁 (1)ReadWriteLock ReadWriteLock 可以实现多个读锁同时进行,但是读与写和写于写互斥,只能有一个写锁线程在进行。 (2)StampedLock StampedLock是Jdk在1.8提供的一种读写锁&a…

ReadWriteLock包括两种子锁

(1)ReadWriteLock

ReadWriteLock 可以实现多个读锁同时进行,但是读与写和写于写互斥,只能有一个写锁线程在进行。

(2)StampedLock

StampedLock是Jdk在1.8提供的一种读写锁,相比较ReentrantReadWriteLock性能更好,因为ReentrantReadWriteLock在读写之间是互斥的,使用的是一种悲观策略,在读线程特别多的情况下,会造成写线程处于饥饿状态,虽然可以在初始化的时候设置为true指定为公平,但是吞吐量又下去了,而StampedLock是提供了一种乐观策略,更好的实现读写分离,并且吞吐量不会下降。

StampedLock包括三种锁:

(1)写锁writeLock:

writeLock是一个独占锁写锁,当一个线程获得该锁后,其他请求读锁或者写锁的线程阻塞, 获取成功后,会返回一个stamp(凭据)变量来表示该锁的版本,在释放锁时调用unlockWrite方法传递stamp参数。提供了非阻塞式获取锁tryWriteLock。

(2)悲观读锁readLock:

readLock是一个共享读锁,在没有线程获取写锁情况下,多个线程可以获取该锁。如果有写锁获取,那么其他线程请求读锁会被阻塞。悲观读锁会认为其他线程可能要对自己操作的数据进行修改,所以需要先对数据进行加锁,这是在读少写多的情况下考虑的。请求该锁成功后会返回一个stamp值,在释放锁时调用unlockRead方法传递stamp参数。提供了非阻塞式获取锁方法tryWriteLock。

(3)乐观读锁tryOptimisticRead:

tryOptimisticRead相对比悲观读锁,在操作数据前并没有通过CAS设置锁的状态,如果没有线程获取写锁,则返回一个非0的stamp变量,获取该stamp后在操作数据前还需要调用validate方法来判断期间是否有线程获取了写锁,如果是返回值为0则有线程获取写锁,如果不是0则可以使用stamp变量的锁来操作数据。由于tryOptimisticRead并没有修改锁状态,所以不需要释放锁。这是读多写少的情况下考虑的,不涉及CAS操作,所以效率较高,在保证数据一致性上需要复制一份要操作的变量到方法栈中,并且在操作数据时可能其他写线程已经修改了数据,而我们操作的是方法栈里面的数据,也就是一个快照,所以最多返回的不是最新的数据,但是一致性得到了保证。

http://www.yayakq.cn/news/708021/

相关文章:

  • 深圳制作网站有几家wordpress地图页面如何添加
  • 做网站是买服务器还是买cdn网站在什么地方设关键词
  • 个人外贸网站制作邯郸网站优化技巧
  • 外贸建站服务装修建材网站
  • 北京网站设计制作过程营销型网站建设方面的书
  • 西安的电子商城网站建设合肥做企业网站的网络公司
  • seo外链收录网站seo优化有哪些
  • 东莞网站建设网站网页制作属于哪个专业
  • 哈尔滨网站建设报价价格百度seo排名工具
  • 网站服务器租用方法好的文案网站
  • wordpress h5 视频企业网站建设优化
  • ico网站进行推广服务类网站开发
  • 基层科普网站建设的现状企业信息管理系统的发展历程
  • 设计外包网站东莞技术支持骏域网站建设专家
  • 网站模板侵权问题临海企业网站建设公司
  • 怎么做服务网站企业传统的网络营销推广方法
  • 郑州建设网站定制上饶婚纱工作室网站建设
  • 网站文章要求网站到期是否能换服务商
  • 咨询型网站网站开发研究内容怎么写
  • 北京网站开发专员自己做网站和推广
  • 简约个人网站手机微网站 模板
  • dz论坛网站后台设置个人网站页面设计素材
  • 宁波网站建设推荐荣盛网络好职业技术培训机构
  • 品牌型网站建设理论wordpress 加载中动画
  • 有哪些网站可以免费看电影商业授权书
  • 小型网站建设如东做网站的公司
  • 深圳大簇激光公司网站湖北省建设厅网站a群
  • 随州网站建设便宜网站首页轮播图怎么做的
  • 丰南建设局网站佛山建设专业网站
  • 网站页面如何设计图想做视频