摘要: 在 多线程中,每个线程会把数据从主内存中拷贝到自己的工作内存中,当线程完成计算后,再把工作内存的数据更新到主内存中,或者当主内存主数据有更新是,线程会去主内存取最新数据。但是,当线程特别忙时,就不会去主内存读最新数据了。 在 java 的多线程中 volatile 主要是为了保证数据的可见性同步,是 阅读全文
posted @ 2020-04-03 01:46 行者老夫 阅读(177) 评论(0) 推荐(0)
摘要: 指令重排是指:代码执行顺序和预期不一致。 代码运行一般步骤为: 1、从内存中获取指令解码 2、计算值 3、执行代码操作 4、把结果写回内存 而写回内存的操作比较耗时,CPU为了性能,可能不会等它完成,就进行对下一个指令解码计算。 发生指令重排是CPU为了提高性能,但必须是对结果不影响的情况,比如: 阅读全文
posted @ 2020-04-03 01:19 行者老夫 阅读(1221) 评论(0) 推荐(0)