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

Java中的锁

Java常见锁 【超全面】_java锁-CSDN博客 

一文看懂Java中的锁 - 知乎

一文读懂 Java 中的各种锁 - 知乎

java中锁的分类总结_java string 锁-CSDN博客

https://www.cnblogs.com/hangychn/p/17184814.html

https://www.cnblogs.com/durenniu/p/10949491.html

锁-Java - 知乎

volatile

https://www.cnblogs.com/zhongqifeng/p/14684028.html

为什么 volatile不能保证原子性 

volatile 关键字本质上是一种内存屏障,它可以确保在 volatile 变量写操作和读操作之间不会发生重排序,这样就可以保证对 volatile 变量的修改能够立即对其他线程可见。但是,volatile 只能保证可见性,并不能保证原子性。

在 Java 中,原子性是指一个操作是不可中断的,即使在多线程环境下也是如此。但是,volatile 变量的写操作和读操作之间是可以被中断的,这意味着在读取或者修改 volatile 变量的过程中,其他线程可能会对这个变量进行修改。因此,使用 volatile 变量并不能保证对变量的操作是原子性的。

如果想要保证原子性,可以使用 Java 并发包中的 AtomicXXX 类,这些类都提供了原子操作的方法。例如,AtomicInteger 提供了对整型变量的原子操作,AtomicLong 提供了对长整型变量的原子操作等。

总之,volatile 关键字可以保证可见性,但是不能保证原子性。如果需要保证原子性,需要使用其他的机制,如 AtomicXXX 类。
 

原子性

原子性是指一个操作是不可中断的,要全部执行完成,要不就都不执行。


http://www.kler.cn/news/157130.html

相关文章:

  • 一文打尽相机单目标定(远心,沙姆镜头)
  • 2024搞钱方式,这些你都了解吗?
  • Java NIO SelectionKey
  • 使用求2个字符串最长公共子序列的方法来实现 git diff 算法 java 实现
  • Kotlin学习之集合
  • 使用JAVA语言写一个排队叫号的小程序
  • C++ 系列 第四篇 C++ 数据类型上篇—基本类型
  • 数据结构学习笔记——广义表
  • 实体、协议、服务和服务访问点
  • 【重点】【滑动窗口】239. 滑动窗口最大值
  • Appium:iOS部署
  • 深度学习在训练时更新和保存最佳训练结果的方法(字典方法,本地保存方法,模型深拷贝方法)
  • selenium中元素定位正确但是操作失败,6种解决办法全搞定
  • 六、ZooKeeper Java API操作
  • 【数据结构】——栈|队列(基本功能)
  • Python字符串模糊匹配工具:TheFuzz 库详解
  • 关于使用百度开发者平台处理语音朗读问题排查
  • Spring-Security取消验证-Get请求接口正常,Post请求报错403
  • java后端技术演变杂谈(未完结)
  • c语言笔记之小项目家庭收支记账软件
  • java synchronized详解
  • ruby安装(vscode、rubymine)
  • 「Qt Widget中文示例指南」如何创建一个计算器?(二)
  • 深度学习(五):pytorch迁移学习之resnet50
  • MySQL安装,建立,导入本地Txt文件
  • 寻找两个有序数组的中位数算法(leetcode第4题)
  • Android 7.1 点击清空全部按钮清空一切运行进程(包括后台在播音乐)
  • 【Linux】进程控制--进程创建/进程终止/进程等待/进程程序替换/简易shell实现
  • CPP-SCNUOJ-Problem P29. [算法课指针] 颜色分类,小白偏题超简单方法
  • 前端---JavaScript篇