use*_*323 2 java volatile
可能重复: 易挥发性昂贵?
我听说在多线程应用程序中使用volatile变量会带来一些性能问题.
有人解释原因吗?
Ste*_*n C 6
声明变量volatile会导致JIT编译器在每次使用变量时使用读取/写入内存的指令.在后一种情况下,必须将高速缓存行刷新到主存储器,其他处理器立即看到更改.读/写存储器循环到执行时间.
volatile
相反,如果您不将变量声明为volatile,则JIT编译器可以发出指令以从寄存器或1级或2级内存高速缓存读取/写入变量的状态.平均而言,这将为每次读取或写入节省几个时钟周期.
如需更详细的治疗,请阅读易挥发的答案?.
归档时间:
14 年,3 月 前
查看次数:
3658 次
最近记录: