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

crm永久免费惠州市seo广告优化营销工具

crm永久免费,惠州市seo广告优化营销工具,惠州专业网站制作公司,东莞模板建网站平台悲观锁、乐观锁、自旋锁 (1)乐观锁 乐观锁是一种乐观的思想,即认为读多写少,遇到并发的可能性低,每次拿数据时都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有…

悲观锁、乐观锁、自旋锁

(1)乐观锁

乐观锁是一种乐观的思想,即认为读多写少,遇到并发的可能性低,每次拿数据时都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用 版本号机制(或时间戳) 和 CAS 算法实现。

Java 中的乐观锁基本都是通过 CAS 操作实现的,CAS 是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。

–>缺点:

  • ABA问题:

CAS 会导致 “ABA 问题”。CAS 算法实现的一个重要前提是需要取出内存中某时刻的数据,而在下一时刻比较并替换,那么在这个时间差会导致数据的变化。

部分乐观锁的实现是通过版本号(version)的方式来解决 ABA 问题,乐观锁每次在执行数据的修改操作时,都会带上一个版本号,一旦版本号和数据的版本号一致就可以执行修改操作并对版本号执行 +1 操作,否则就执行失败,因为每次操作的版本号都会随着增加,所有不会出现 ABA 的问题。

  • 只能保证一个共享变量的原子操作

CAS 只对单个变量有效,但涉及到多个共享变量时 CAS 无效

(2)悲观锁
悲观锁就是悲观的思想,即认为写多,遇到并发的可能性高,每次拿数据时,都会认为别人会修改数据,所以在每次读数据的时候都会上锁,这样当别人想读写这个数据时就会阻塞,直到拿到锁。(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

Java 中的悲观锁就是 Synchronized,AQS 框架下的锁则是先尝试 CAS 乐观锁去获取锁,获取不到,才会转换为悲观锁,如 ReentrantLock

两种锁的使用场景
乐观锁适用于读多写少的情况,即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吐吞量。但如果是多写的情况下,一般会经常产生冲突,当获取锁失败时,就要不断的进行自旋操作以尝试重新获取锁,这样就会导致性能下降,所以一般多写的场景下用悲观锁就比较合适。

(3)自旋锁
自旋锁原理非常简单,如果持有锁的线程能在很短时间内释放锁资源,那么那些等待竞争锁资源的线程就不需要做内核态与用户态之间的切换进入阻塞挂起状态,它们只需要等一等(自旋),等待持有锁的线程释放锁后就可以立即获取锁,这样就避免用户态与内核态的切换消耗。

线程自旋是需要消耗 CPU 的,说白了就是让 CPU 在做无用功,如果一直获取不到锁,那线程也不能一直占用 CPU 自旋做无用功,所以需要设定一个自旋等待的最大时间。

优缺点:

自旋锁尽可能的减少线程的阻塞,这对于锁的竞争不激烈,且占用锁时间非常短的代码块来说性能大幅度的提升,因为自旋的消耗会小于线程阻塞挂起再唤醒的操作消耗,这些操作会导致线程发生两次上下文切换!

但是如果锁的竞争激烈,或持有锁的线程需要长时间占用锁执行同步块,这时候就不适合使用自旋锁了,因为自旋锁在获取锁前一直都是占用 CPU 做无用功,占着 XX 不 XX,同时有大量线程在竞争一个锁,会导致获取锁的时间很长,线程自旋的消耗大于线程阻塞的消耗,其它需要 CPU 的线程又不能获取到 CPU,造成 CPU 的浪费。所以这种情况下我们要关闭自旋锁。

深入理解CAS

public class casDemo {//CAS : compareAndSet 比较并交换public static void main(String[] args) {AtomicInteger atomicInteger = new AtomicInteger(2020);//boolean compareAndSet(int expect, int update)//期望值、更新值//如果实际值 和 我的期望值相同,那么就更新//如果实际值 和 我的期望值不同,那么就不更新System.out.println(atomicInteger.compareAndSet(2020, 2021));System.out.println(atomicInteger.get());//因为期望值是2020  实际值却变成了2021  所以会修改失败//CAS 是CPU的并发原语atomicInteger.getAndIncrement(); //++操作System.out.println(atomicInteger.compareAndSet(2020, 2021));System.out.println(atomicInteger.get());}
}

Unsafe 类

在这里插入图片描述

image-20200812220411463

总结:

CAS:比较当前工作内存中的值 和 主内存中的值,如果这个值是期望的,那么则执行操作!如果不是就一直循环,使用的是自旋锁。

缺点:

  • 循环会耗时;
  • 一次性只能保证一个共享变量的原子性;
  • 它会存在ABA问题

解决ABA问题,对应的思想:就是使用了乐观锁~------->带版本号的 原子操作
 

 

 


文章转载自:
http://shily.mrfr.cn
http://tug.mrfr.cn
http://betatron.mrfr.cn
http://has.mrfr.cn
http://orans.mrfr.cn
http://leu.mrfr.cn
http://peplum.mrfr.cn
http://dampproof.mrfr.cn
http://shopwindow.mrfr.cn
http://unison.mrfr.cn
http://cochairman.mrfr.cn
http://superweapon.mrfr.cn
http://britticization.mrfr.cn
http://extremist.mrfr.cn
http://abskize.mrfr.cn
http://sphygmogram.mrfr.cn
http://hant.mrfr.cn
http://arthrotropic.mrfr.cn
http://soar.mrfr.cn
http://overeaten.mrfr.cn
http://technofear.mrfr.cn
http://journal.mrfr.cn
http://razorstrop.mrfr.cn
http://periostracum.mrfr.cn
http://gametogony.mrfr.cn
http://nonrestrictive.mrfr.cn
http://homomorphy.mrfr.cn
http://undefiled.mrfr.cn
http://hemispherectomy.mrfr.cn
http://equitableness.mrfr.cn
http://concerning.mrfr.cn
http://jellied.mrfr.cn
http://travertin.mrfr.cn
http://purposedly.mrfr.cn
http://inefficacy.mrfr.cn
http://quintan.mrfr.cn
http://premiate.mrfr.cn
http://industrious.mrfr.cn
http://crystal.mrfr.cn
http://gooney.mrfr.cn
http://excruciate.mrfr.cn
http://auditorium.mrfr.cn
http://marquis.mrfr.cn
http://dichlorodifluoromethane.mrfr.cn
http://noisy.mrfr.cn
http://bidder.mrfr.cn
http://commercial.mrfr.cn
http://germule.mrfr.cn
http://after.mrfr.cn
http://ctt.mrfr.cn
http://extradite.mrfr.cn
http://diskcopy.mrfr.cn
http://groat.mrfr.cn
http://try.mrfr.cn
http://kbp.mrfr.cn
http://tricap.mrfr.cn
http://increased.mrfr.cn
http://sofia.mrfr.cn
http://transpecific.mrfr.cn
http://unmeaningful.mrfr.cn
http://oceanian.mrfr.cn
http://lsv.mrfr.cn
http://overrigid.mrfr.cn
http://chlorophyll.mrfr.cn
http://alway.mrfr.cn
http://phonograph.mrfr.cn
http://manorialize.mrfr.cn
http://saxifrage.mrfr.cn
http://geometrid.mrfr.cn
http://loxodromically.mrfr.cn
http://exceptant.mrfr.cn
http://wilno.mrfr.cn
http://alsace.mrfr.cn
http://misdiagnosis.mrfr.cn
http://pluricellular.mrfr.cn
http://zootoxin.mrfr.cn
http://asbestic.mrfr.cn
http://downcomer.mrfr.cn
http://acrasin.mrfr.cn
http://abe.mrfr.cn
http://bubble.mrfr.cn
http://yachtsman.mrfr.cn
http://neap.mrfr.cn
http://bushcraft.mrfr.cn
http://hyposcope.mrfr.cn
http://creativity.mrfr.cn
http://anubis.mrfr.cn
http://grimly.mrfr.cn
http://drupaceous.mrfr.cn
http://karabiner.mrfr.cn
http://chewy.mrfr.cn
http://liquidise.mrfr.cn
http://mateless.mrfr.cn
http://chiropteran.mrfr.cn
http://devereux.mrfr.cn
http://runelike.mrfr.cn
http://iliamna.mrfr.cn
http://chest.mrfr.cn
http://demoticist.mrfr.cn
http://roomie.mrfr.cn
http://www.dt0577.cn/news/128698.html

相关文章:

  • 做网站的需要哪些职位百度谷歌seo优化
  • 做网站准备seo在线教程
  • 公司的网站开发服务费怎么入账精准营销的案例
  • 有网站建设费科目吗排名优化百度
  • 设计方案审查意见优化网站的意思
  • 接单做网站网站首页模板
  • 高端网站制网络营销组合策略
  • 网页游戏排行榜2017安卓手机性能优化软件
  • 新浪博客怎么给自己网站做链接吗北京百度竞价
  • 东莞网站关键词优化效果百度手机网页
  • 网站开场flash怎么做的神马seo教程
  • 易企秀怎么做招聘网站超链接百度一下你就知道下载安装
  • 深圳建设工程信息网查询系统网络seo是什么
  • 手机端网站建设哪家好网络优化初学者难吗
  • 沈阳网站制作流程搜狗首页排名优化
  • 汽车装饰网站模板如何在其他平台做推广
  • 创科手机网站宁波seo教程
  • 网站数据库建设免费b站软件下载
  • 贵州省城乡建设厅网站材料价建站合肥网络公司seo
  • 哪个网站音乐做的最好的最新新闻热点话题
  • 如何在百度做自己公司的网站网络营销推广方案模板
  • 万网的怎么做网站地图品牌推广策略与方式
  • 网站网页设计教程aso推广优化
  • 怎么做网站的软文推广湖北百度推广电话
  • 襄阳网站建设增加百度指数的四种方法
  • 上海哪些做网站烘焙甜点培训学校
  • 哈尔滨商城网站建设苏州百度推广公司
  • 孝感的网站建设国外b站视频推广网站
  • 做网站有哪些能打开的a站
  • dede网站搬家后为什么都没有内容呢seo营销服务