Java内存模型——《深入理解java虚拟机》读书笔记

上一篇:虚拟机类加载机制——《深入理解java虚拟机》读书笔记

1、TPS是什么?
Transactions Per Second,每秒事务处理数,代表着一秒内服务端平均能响应的请求总数。
2、java内存模型
内存模型可以理解为在特定的操作协议下,对特定的内存或高速缓存进行读写访问的抽象过程。
java内存模型的主要目的是定义程序中各种变量的访问规则,即关注虚拟机把变量存储到内存和从内存中取出变量值这样的底层细节。
java内存模型规定了所有变量(不包括局部变量和参数)都存储在主内存中,每条线程还有自己的工作内存,该线程的工作内存中保存了被该线程使用的变量的主内存副本,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的数据,线程间变量的传递都需要主内存来完成。交互关系如图:
在这里插入图片描述

3、volatile变量理解
两个特性:
可见性:当一个线程修改了某个被volatile修饰的变量,新值对于其它线程来说是可以立即得知的。volatile变量不存在缓存不一致的问题。
禁止指令重排
volatile同步机制的性能在某些情况下确实要优于锁(synchronized关键字或concurrent包里面的锁),但是很难说会快上多少。自己与自己比较的话,volatile变量的读操作的性能消耗与普通变量的读几乎没有什么差别,写操作会慢一点,因为需要在本地代码中插入许多内存屏障指令来保证处理器不发生乱序执行。大多数场景下,volatile的总开销还是要比锁来得更低。
4、什么是先行发生原则?
先行发生是java内存模型中定义的两项操作之间的偏序关系,比如操作A先行发生于B,则操作A产生的影响能被B观察到。
先行发生原则与时间先后顺序之间基本没有因果关系,所以在衡量并发安全问题的时候,要以先行原则为准,不要受时间顺序的影响。

下一篇:线程安全与锁优化——《深入理解java虚拟机》读书笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值