Java高并发程序设计笔记

JMM内存模型之-可见性:可见性是指当一个线程修改了某一个共享变量的值,其他线程是否能够立即知道这个修改。

JMM内存模型之-有序性:有序性问题的原因是因为程序在执行时,可能会出现指令重排,重排后的指令的顺序未必一致。

一条指令的执行可以分为很多步骤的:

简单来说就是以下几步:

1、取指IF

2、译码和取寄存器操作数ID

3、执行或者有效地址计算EX

4、存储器访问MEM

5、写回WB

对于指令重排:

对于指令重排不可以违背的原则:

1、程序顺序原则:一个线程内保证语义的串行性。

2、volatile规则:volatile变量的写,先发生于读,这保证了volatile变量的可见性

3、锁规则:解锁必然发生在随后的加锁前

4、传递性:A先于B,B先于C,那么A必然先于C

5、线程的所有操作先于线程的终结

6、线程的中断先于被中断线程的代码

7、对象的构造函数执行、结束先于finalize方法


你可能感兴趣的:(Java,线程)