synchronized有序性

有序性

synchronized语义表示锁在同一时刻只能由一个线程进行获取,当锁被占用后,其他线程只能等待。因

此,synchronized语义就要求线程在访问读写共享变量时只能“串行”执行,因此synchronized具有有序

性。

在java内存模型中说过,为了性能优化,编译器和处理器会进行指令重排序;也就是说java程序天然的

有序性可以总结为:如果在本线程内观察,所有的操作都是有序的;如果在一个线程观察另一个线程,

所有的操作都是无序的。在单例模式的实现上有一种双重检验锁定的方式(Double-checked

Locking)。

volatile包含禁止指令重排序的语义,其具有有序性。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容