线程互斥代码的过程
1.获得互斥锁、
2.清空工作内存
3.从主内存中获得副本
4.执行代码
5.将更改后的共享变量值刷新到主内存中去
6.释放互斥锁
1.获得互斥锁、
2.清空工作内存
3.从主内存中获得副本
4.执行代码
5.将更改后的共享变量值刷新到主内存中去
6.释放互斥锁
2016-09-16
最新回答 / 慕斯0128424
这么跟你解释:一行java代码被cpu执行的时候执行的是若干条cpu指令,synchronized对应到cpu执行若干条指令,但是volatile也对应若干条指令,相同的是他们对应的指令有一些相同的,即有重叠,但是又有差异,于是功能有相同也有差异。他们的使用场景也是如此。你现在不适合去理解深沉原理,先学会用,用对场景。
2016-07-28
不是说volatile不保证原子性吗?为什么对于64位类型的变量用volatile修饰?
JAVA 规定的。JAVA 说这么写 就给你的64位 保证原子性,就这么任性,怎么地。
JAVA 规定的。JAVA 说这么写 就给你的64位 保证原子性,就这么任性,怎么地。