首页 > 其他分享 >为什么AtomicInteger在CAS 在这个过程中不会被其他线程打断

为什么AtomicInteger在CAS 在这个过程中不会被其他线程打断

时间:2023-05-16 11:35:53浏览次数:34  
标签:CAS AtomicInteger 线程 打断 操作 内存地址

AtomicInteger中的CAS操作是基于硬件级别的原子操作,因为它是由CPU硬件直接支持的操作。在CAS操作期间,对于同一内存地址的多个线程的访问会被串行化,即同时只有一个线程能够成功执行CAS操作。当一个线程请求执行CAS操作时,如果当前内存地址的值与期望的值相同,那么该线程就成功执行了CAS操作,否则它将重新尝试。如果多个线程同时执行CAS操作,只有一个线程能够获得成功,其他线程将失败并重新试。因此,在CAS期间,其他线程不会对该内存地址的值进行修改,也不会对CAS操作进行打断。这是一个非常强大和高效的功能,可以帮助实现线程安全的并发操作。

标签:CAS,AtomicInteger,线程,打断,操作,内存地址
From: https://www.cnblogs.com/upupup-999/p/17404408.html

相关文章

  • CAS 和 原子类
    什么是CAS全称是Compare-And-Swap,对数据进行原子性操作,sun.misc.Unsafe类的各个native方法实现的比较当前工作内存中的值和主内存中的值,如果相同则执行规定操作,否则什么都不做或者重来一次,重来就是自旋锁了java各种锁看这里CASVSvolatileVSsynchronizedCAS:保证......
  • Qt ffmpeg yolov5 tensorrt 高性能部署,使用tensorrt推理yolov5模型,封装成了dll, 支
    Qtffmpegyolov5tensorrt高性能部署,使用tensorrt推理yolov5模型,封装成了dll,支持多窗口多线程推理,本项目为4窗口版,各个窗口支持识别类别,阈值,roi区域等设置。算法支持onnxruntime,tensorrt推理,以及推理加deepsort,bytetrack和kcf多目标跟踪。ID:353200676908443403......
  • Python多线程并发通用模板
    多线程可以同时处理多个任务,支持并发处理,从而提高系统的并发能力。多线程爬虫的好处主要有提高爬取效率、提高稳定性、节省资源等。总之,多线程爬虫可以提高爬取效率、稳定性和资源利用率,是一种更加高效、可靠的爬虫实现方式。多线程爬虫并行可以提高爬虫的效率,具体实现方法如下:......
  • 5月15日c++小语法右值引用,lambda表达式,和多线程
    c++中有一个东西叫做左值引用和右值引用,因为面向对象语言中有很多封装好的自定义类型容器,而这些容器又不像内置类型那样传值方便,有时候可能会有很大的深拷贝浪费于是有了左值引用:在函数传参时方便的传引用避免了传复杂的指针,而在返回之上直接传引用减少了不必要的深拷贝.而右......
  • python 操作 PostgreSQL 数据库,线程并行修改 5w 条数据,性能优化
    python操作PostgreSQL数据库,线程并行修改5w条数据,性能优化110 娃哈哈店长的个人博客 /  433 /  0 / 创建于 3年前  获取新xls表中的所有数据并整理为列表形式返回其实修改的代码量不大,但是要考虑保留之前我们用的函数和方法还要继续能使用。excel2......
  • Java并发(六)----线程start、run、state方法
    1、start与run调用runpublicstaticvoidmain(String[]args){  Threadt1=newThread("t1"){    @Override    publicvoidrun(){      log.debug(Thread.currentThread().getName());//打印线程名称      FileRe......
  • element-plus + VUE3 项目 build 之后 el-cascader无法选中而且导致整个网页卡顿
    cascader不能用v-model接收值,需要改为model-value方式<el-cascadermodel-value="selRegion":options="RegionTreeCascader":show-all-levels="true"separator="-":props="{checkStrictly:true,expandTrigger:'hove......
  • Java并发(五)----线程常见方法总结
    常见方法方法名static功能说明注意start() 启动一个新线程,在新的线程运行run方法中的代码start方法只是让线程进入就绪,里面代码不一定立刻运行(CPU的时间片还没分给它)。每个线程对象的start方法只能调用一次,如果调用了多次会出现IllegalThreadStateException......
  • CAS Server 搭建
    1、CASServer下载,我这里选择了5.3的版本,下载地址https://github.com/apereo/cas-overlay-template/tree/5.32、HTTPS证书生成,我是用JDK自带的keytool工具生成的,进入JDK安装目录,在bin目录下打开cmd,输入以下命令行就可以生成证书了keytool-genkey-aliascasserver-keya......
  • 线程池的执行流程
    当核心线程已满的情况下,首先就把请求提交给阻塞队列,只有当阻塞队列也满的情况下,才会创新非核心线程处理   ......