java volatile与锁 个人理解

news/2024/7/9 19:05:20

书上意思:

当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序,volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值!

volatile

  1. volatile 只保证了共享变量在线程间的可见性,当某个线程修改了变量V,在底层计算机中会先将当前值写入内存中且使其他处理器(注意是处理器)中变量V所在地址的缓存行(块)失效,如TLB,L1,L2,L3缓存。

锁既保证了线程的互斥,也拥有与volatile一样的效果

所以volatile被称为轻量级的锁?

以上是本人觉得比较符合理解的。。。。


http://www.niftyadmin.cn/n/4557684.html

相关文章

【Linux 运维】linux系统关机、重启、注销命令

linux 关机、重启、注销命令: 关机命令: shutdown -h now 立刻关机(生产常用)shutdown -h 1 一分钟后关机 ( shutdown -c 可以将刚刚shutdown设置的指令取消取消)halt 立即停止系统,需要人工关闭电源&…

Hdoop 启动:localhost: Error: JAVA_HOME is not set and could not be found.

参考教程: http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html 其中有 Prepare to Start the Hadoop Cluster Unpack the downloaded Hadoop distribution. In the distribution, edit the file etc/hadoop/hadoop-en…

ubantu(linux) eclipse 打不开 oom stackoverflow 的原因之一

工作空间日志提示: org.osgi.framework.BundleException: Exception in org.eclipse.core.resources.ResourcesPlugin.start() of bundle org.eclipse.core.resources. 极大的可能就是因为选择了默认的工作空间,而刚好就是那个默认空间因为&#xff0c…

使用JMX监控Kafka

监控数据源 JMX RMI方式启动Broker,Consumer,Producer -ea -Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse -Dcom.sun.management.jmxremote.port9996 通过JMX RMI方式连接 service:jmx:rmi:///jndi/rmi://127.0.0.1:9998/jmxrmi …

面试2——java基础2

11、MVC设计模型 mvc设计模型是一种使用model-view-controller(模型-视图-控制器)设计创建web应用程序的模式。是一种开发模式,好处是可以将界面和业务逻辑分离。 model:是程序的主体,主要包含业务数据和业务逻辑。是应…

java中的负整数和正整数在一起取模(%)

参考算法第一章答疑: a % b 的余数定义为:(a / b)* b a % b 总是等于 a 例1:-14 % 3 -2 ,14 % -3 2 -14 / 3 以及 14 / -3 他们的商都为 -4 按照常规:3 * -4 > -14 余 -2 &#xff0…

C语言2维数组动态问题

里面有很多相关的操作 y)若有兴趣可以写一个俄罗斯方块 那么二维就是一个面了(分为两个方向:x 它也被称之为矩阵可以这样看:一维是条线 ") } System.out.println(" ");}一时还想不到其他的例子 所以就把你那个二维数组打印出来 ||| 二维数组应该很清楚的啊 }; |…

websockect入门(一)

可能很多人会问明明有http协议为什么还需要websockect呢?那是因为http协议也是有缺陷啊:http只能单向的通信,即http的通信只能是客户端发起。当然如果要实现双向的通讯,也是可以的,那么 只能通过轮询来实现。 那么何为轮询呢&…