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