摘要:
双重检查锁定的延时初始化: 双重检查锁定看起来似乎很完美,但这是一个错误的优化!执行程序读取到第5行instance不为空时,instance引用的对象可能还没有完成初始化。 程序第8行所做的操作如下: 1:分配对象的内存空间 2:初始化对象 3:设置instance指向刚分配的内存地址 步骤2和3 阅读全文
摘要:
intra-thread semantics 保证重排序不会改变单线程内的程序执行结果。 换句话说,intra-thread semantics 允许那些在单线程内,不会改变单线程程序执行结果的重排序。 阅读全文
摘要:
对于final域,编译器和处理器要遵守两个重要的重排序规则: 1:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 2:初次读一个包含final域的对象的引用,与随后初次都这个final域,这两个操作之间不能重排序。 对于引用类型。写f 阅读全文