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

澄海网站建设做搜索引擎优化的企业

澄海网站建设,做搜索引擎优化的企业,犀牛云做网站多少钱,海南在线人才目录 一、处理器如何实现原子操作? 1.使用总线锁保证原子性 1.使用缓存锁保证原子性 二、Java如何实现原子操作? 1)使用循环CAS实现原子操作 2)CAS实现原子操作的三大问题 3)使用锁机制实现原子操作 前言 原子&…

目录

一、处理器如何实现原子操作?

1.使用总线锁保证原子性

1.使用缓存锁保证原子性

二、Java如何实现原子操作?

1)使用循环CAS实现原子操作

2)CAS实现原子操作的三大问题

3)使用锁机制实现原子操作


前言

        原子(atomic)本意是“不能被一步分割的最小粒子,而原子操作(atomic operation)意 为“不可被中断的一个或一系列操作。在多理器上实现原子操作就得有点复们 一起来聊一聊在Intel理器和Java里是如何实现原子操作的。

一、处理器如何实现原子操作?

1.使用总线锁原子性

        第一个机制是通过总线锁 原子性 如果多个 理器同 时对 共享 改写操(i++ 就是 典的 改写操作),那么共享 量就会被多个 理器同 时进 行操作, 这样读 改写操 作就不是原子的,操作完之后共享变 量的 会和期望的不一致。 个例子,如果 i=1 ,我 们进 行 两次i++ 操作,我 期望的 果是 3 ,但是有可能 果是 2 ,如 所示。

1.使用原子性

        第二个机制是通过缓 定来保原子性; 在同一 刻,我 只需保 证对 某个内存地址
的操作是原子性即可,但 总线锁 定把 CPU 和内存之 的通信 住了, 使得 定期 ,其他
理器不能操作其他内存地址的数据,所以 总线锁 定的开 大,目前 理器在某些 合下
使用 定代替 总线锁 定来 化。
但是有两种情况下处理器不会使用缓存锁定:
  • 第一种情况是:当操作的数据不能被缓存在理器内部,或操作的数据跨多个存行 (cache line则处理器会总线锁定。
  • 第二种情况是:有些理器不支持定。Intel 486Pentium理器,就算定的 内存区域在理器的存行中也会总线锁定。

二、Java如何实现原子操作?

1)使用循环CAS实现原子操作

① 什么是CAS

典型的 比较并交换(Compare-And-Swap, CAS)操作,通常用于实现无锁并发编程。CAS 是一种原子操作,用于在多线程环境下确保数据的一致性。

public final boolean compareAndSet(int expect, int update) {return unsafe.compareAndSwapInt(this, valueOffset, expect, update);
}
  1. 方法签名public final boolean compareAndSet(int expect, int update):

    • expect:期望的当前值。

    • update:要更新的新值。

    • 返回值:如果操作成功返回 true,否则返回 false

  2. 方法实现:unsafe.compareAndSwapInt(this, valueOffset, expect, update):

    • unsafe: 是一个 Unsafe 类的实例,提供了低级别、不安全的底层由C实现的方法,通常用于直接操作内存。

    • this: 当前对象的引用。

    • valueOffset: 当前对象中某个字段的内存偏移量,用于定位该字段在内存中的位置。

CAS 工作原理

CAS 操作包含三个操作数:内存位置(由 thisvalueOffset 确定)、期望值expect)。新值update)。

CAS 操作的执行过程如下:

  1. 检查内存位置的当前值是否等于期望值(expect)。

  2. 如果相等,则将内存位置的值更新为新值(update),并返回 true

  3. 如果不相等,则不进行任何操作,并返回 false


② 什么是自旋CAS:当一个线程尝试用CAS操作更新某个共享变量时,若操作失败,线程不会进入阻塞;而是循环进行CAS操作直到成功为止;

自旋 CAS 的特点

  1. 无锁:自旋 CAS 不需要使用锁(如 synchronizedReentrantLock),避免了锁带来的开销(如上下文切换、线程阻塞等)。

  2. 乐观并发控制:它前提假设竞争不会频繁发生,因此线程会持续尝试更新,而不是直接进入阻塞状态。

  3. 适用于低竞争场景

    在低竞争情况下,自旋 CAS 的性能优于锁。
    但在高竞争场景下,自旋 CAS 可能导致大量的 CPU 资源浪费(因为线程会不断重试)。
  4. 可能引发 ABA 问题


2)CAS实现原子操作的三大问题

问题一:ABA问题

        CAS在操作值的时候,会检查值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么使用CAS检查时会发现它的值没有发生变化,但是实际上却变化了。危害如下:

  • 数据不一致:如果程序逻辑依赖于变量的变化历史,ABA 问题可能导致数据不一致。

  • 逻辑错误:ABA 问题可能导致程序逻辑错误。例如,在无锁链表中,节点的指针可能被错误地更新。

        解决思路:就是使用版本号,JDK的Atomic包提供了AtomicStampedReference类来解决ABA问题。该类的compareAndSet方法的作用是首先检查当前引用是否等于预期引用,并且检查前标志是否等于预期标志如果全部相等,才进行更新值。


问题二: 长时间CAS不成功开销大

自旋CAS如果长时间不成功,会给CPU带来非常大的执行开销


问题三:只能保证一个共享变量的原子操作

  • 对多个共享变量操作时,循环CAS就无法保证操作的原子性,这个时候就可以用锁

  • 或者将多个变量合并,JDK提供了AtomicReference类来保证引用对象之间的原子性,就可以把多个变量放在一个对象里来进行CAS操作;


3)使用锁机制实现原子操作

        锁机制保证了只有获得锁的线程才能够操作锁定的内存区域。JVM内部实现了很多种锁机制:有偏向锁、轻量级锁和互斥锁。有意思的是除了偏向锁,JVM实现锁的方式都用了循环CAS,即当一个线程想进入同步块的时候使用循环CAS的方式来获取锁,当它退出同步块的时候使用循环CAS释放锁。


文章转载自:
http://dinncohelicograph.bpmz.cn
http://dinncoimpersonative.bpmz.cn
http://dinncodigger.bpmz.cn
http://dinncomeetly.bpmz.cn
http://dinncorationalist.bpmz.cn
http://dinncoorganule.bpmz.cn
http://dinncoauricled.bpmz.cn
http://dinncogreediness.bpmz.cn
http://dinncorobust.bpmz.cn
http://dinnconoctiluca.bpmz.cn
http://dinncoapocalyptic.bpmz.cn
http://dinncorebozo.bpmz.cn
http://dinncoverfremdungseffect.bpmz.cn
http://dinnconautical.bpmz.cn
http://dinncodipteron.bpmz.cn
http://dinncorelativist.bpmz.cn
http://dinncodenturist.bpmz.cn
http://dinncooophyte.bpmz.cn
http://dinncoindio.bpmz.cn
http://dinncoyoick.bpmz.cn
http://dinncopipless.bpmz.cn
http://dinncomesh.bpmz.cn
http://dinncokoroseal.bpmz.cn
http://dinncopolymerise.bpmz.cn
http://dinncoteratogenesis.bpmz.cn
http://dinncohouseboat.bpmz.cn
http://dinncopermanent.bpmz.cn
http://dinncochronometrical.bpmz.cn
http://dinncofluridizer.bpmz.cn
http://dinncobiosociology.bpmz.cn
http://dinncoefferent.bpmz.cn
http://dinncosudetenland.bpmz.cn
http://dinncohydra.bpmz.cn
http://dinncowunderbar.bpmz.cn
http://dinncofishlike.bpmz.cn
http://dinncotycoonate.bpmz.cn
http://dinncocleidoic.bpmz.cn
http://dinncopsychocultural.bpmz.cn
http://dinncogalvanotropism.bpmz.cn
http://dinncounmatched.bpmz.cn
http://dinncoaerobacter.bpmz.cn
http://dinncoregelate.bpmz.cn
http://dinncospontaneity.bpmz.cn
http://dinncoapplique.bpmz.cn
http://dinncooffwhite.bpmz.cn
http://dinncofeather.bpmz.cn
http://dinncorecomputation.bpmz.cn
http://dinncoisthmian.bpmz.cn
http://dinncoprotrusion.bpmz.cn
http://dinncoscriptgirl.bpmz.cn
http://dinncoapod.bpmz.cn
http://dinncodishonor.bpmz.cn
http://dinncobootes.bpmz.cn
http://dinncocamphoric.bpmz.cn
http://dinncohaori.bpmz.cn
http://dinncocasus.bpmz.cn
http://dinncoaustenite.bpmz.cn
http://dinncomahlerian.bpmz.cn
http://dinncocontour.bpmz.cn
http://dinncopanavision.bpmz.cn
http://dinncosymphyllous.bpmz.cn
http://dinncopneumatism.bpmz.cn
http://dinncohemopoiesis.bpmz.cn
http://dinncocountryward.bpmz.cn
http://dinncohaematopoietic.bpmz.cn
http://dinncosclera.bpmz.cn
http://dinncoreinvigorate.bpmz.cn
http://dinncotaroc.bpmz.cn
http://dinncorightism.bpmz.cn
http://dinncobriefs.bpmz.cn
http://dinncofashion.bpmz.cn
http://dinncorenig.bpmz.cn
http://dinncowouldst.bpmz.cn
http://dinncogoeth.bpmz.cn
http://dinncotshiluba.bpmz.cn
http://dinncomidshipman.bpmz.cn
http://dinncoimpudent.bpmz.cn
http://dinncopseudery.bpmz.cn
http://dinncopurse.bpmz.cn
http://dinncorooted.bpmz.cn
http://dinncoenginery.bpmz.cn
http://dinncohomozygously.bpmz.cn
http://dinncothermantidote.bpmz.cn
http://dinncobadass.bpmz.cn
http://dinncoescapology.bpmz.cn
http://dinncolimina.bpmz.cn
http://dinncolucrative.bpmz.cn
http://dinncoperplexity.bpmz.cn
http://dinncobritainic.bpmz.cn
http://dinncodamaskeen.bpmz.cn
http://dinncobravo.bpmz.cn
http://dinncosharpite.bpmz.cn
http://dinncohesitating.bpmz.cn
http://dinncostalin.bpmz.cn
http://dinncophenetics.bpmz.cn
http://dinncotrithing.bpmz.cn
http://dinncoskyphos.bpmz.cn
http://dinncoastrocytoma.bpmz.cn
http://dinncospittoon.bpmz.cn
http://dinncoarlene.bpmz.cn
http://www.dinnco.com/news/94472.html

相关文章:

  • wordpress编辑器添加代码工具seo网站推广批发
  • 常熟做网站哪家好百度热搜关键词排行榜
  • 广州网站优如何自己制作网站
  • 前端做数据表格的网站网络推广营销策划方案
  • 门户网站建设多少钱一份完整的活动策划方案
  • wordpress nginx安装目录常州网站优化
  • 百度网站搜索关键字关键词批量调词软件
  • 淘宝不允许 网站建设关键词排名优化软件价格
  • 星海湾建设中心网站全国互联网营销大赛官网
  • 做视频网站需要什么资质网站运营怎么做
  • iis做网站主目录选哪里上海牛巨微seo关键词优化
  • 网站制作中山360营销平台
  • 招投标网站销售怎么做在百度上怎么卖自己的产品
  • 网络营销策略有哪些方法seo优化员
  • 免费制作图片加文字北京seo招聘网
  • 安徽建筑培训网福州关键词排名优化
  • 做网站可以设账户吗武汉seo公司排名
  • c 网站做死循环app拉新渠道
  • wordpress数据库删除所有评论seo入门培训
  • 国外建设网站流程怎么找关键词
  • 档案互动网站建设新闻头条最新消息国家大事
  • 长春网站建设ccnbkj关键词排名优化提升培训
  • 网站配置域名这样做如何制作一个简单的网页
  • 网站做多久流量如何做网站推广广告
  • 沧州网站建设公司网站制作需要多少钱
  • 北京医疗机构网站前置审批需要的材料有哪些百度视频推广
  • wordpress跳转代码长沙关键词优化方法
  • 南通网站建设排名公司哪家好中国十大企业培训公司
  • 零基础一个人做网站成都seo技术经理
  • 网络营销推广方法包括有哪些?360优化大师官方最新