当前位置: 首页 > 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/a/157130.html

相关文章:

  • Flutter 实现全局悬浮按钮学习
  • 基于Pycharm与数据库的新闻管理系统(3)MongoDB
  • 如何删除Mac上的系统数据
  • oracle怎样使用logmnr恢复误删除的数据
  • Java 8使用Stream流去除一个list中包含另一个list已存在的某个字段的对象
  • ElasticSearch 分布式部署
  • 一文打尽相机单目标定(远心,沙姆镜头)
  • 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语言笔记之小项目家庭收支记账软件