有序性
在并发时可能会出现乱序
java 代码要转成汇编代码
汇编代码执行步骤:取指,译码和取寄存器操作数,执行或者有效地址计算,存储器访问,写回<br>
指令重排可以使流水线更加顺畅
可见性
当一个线程修改了某一个共享变量的值,其他线程是否能够立即知道这个修改
产生原因:编译器优化,硬件优化
Happen-Before
程序顺序原则
volatile规则:volatile变量的写,先发生于读<br>
锁规则:解锁(unlock)必然发生在随后的加锁(lock)前<br>
传递性:A先于B,B先于C,那么A必然先于C<br>
线程的start()方法先于它的每一个动作<br>
线程的所有操作先于线程的终结
线程的中断(interrupt())先于被中断线程的代码<br>
对象的构造函数执行结束先于finalize()方法<br>