jvm调优以及并发编程初步

JVM内存模型

类加载器 : new Student (这种属于隐式加载字节码) | class.forName() (这种属于显式加载字节码)

JMM内存模型(java线程内存模型)

JMM-同步八种操作介绍
(1) lock(锁定) :作用于主内存的变量,把一个变量标记为一条线程独占状态
(2) unlock(解锁) :作用于主内存的变量,把一个处于锁定状态的变量释放出来,释放后
的变量才可以被其他线程锁定
(3) read(读取) :作用于主内存的变量,把一个变量值从主内存传输到线程的工作内存
中,以便随后的load动作使用
(4) load(载入) :作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工
作内存的变量副本中
(5) use(使用) :作用于工作内存的变量,把工作内存中的一个变量值传递给执行引擎
(6) assign(赋值) :作用于工作内存的变量,它把一个从执行引擎接收到的值赋给工作内
存的变量
(7) store(存储) :作用于工作内存的变量,把工作内存中的一个变量的值传送到主内存
中,以便随后的write的操作
(8) write(写入) :作用于工作内存的变量,它把store操作从工作内存中的一个变量的值
传送到主内存的变量中

 

 并发编程的可见性,原子性与有序性问题

 

可见性:

volatile关键字保证可见性。当一个共享变量被volatile修饰时,它会保证修改的值立即
被其他的线程看到,即修改的值立即更新到主存中,当其他线程需要读取时,它会去内存中
读取新值。 MESI缓存一致性原理
 
有序性:眼见不一定为真 (可以使用volatile关键字)涉及到指令重排(不太懂)
 

原子性:

除了JVM自身提供的对基本数据类型读写操作的原子性外,可以通过 synchronized
Lock 实现原子性。因为synchronized和Lock能够保证任一时刻只有一个线程访问该代码

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值