程序运行时,有2大块内存,主内存和本地内存,当某线程读或写一个变量时,先操作本地内存,再选择合适的时机同步到主内存中。
并发三个重要的概念:原子性,可见性,有序性。
关于原子性:
1,synchronized{}修饰的代码块,可保证原子性
2,对于volatile int i = 0;
i = 2;是原子操作
i++;不是原子操作,因为要先读取i的当前值,再进行自增,再进行赋值操作
i = i;不是原子操作,因为要先读取i的当前值,再进行赋值操作
int j = i;不是原子操作,因为要先读取i的当前值,再进行赋值操作
volatile只具备可见性和有序性。
volatile可见性,当线程给该变量赋值时,该新值会先修改到本地内存,再直接同步到主内存。
volatile有序性,当纯种读取该变量值时,必须先从主内存读取最新的值,再同步到本地内存中,再从本地内存中读取最新值。
本文深入探讨了并发编程中的核心概念——原子性、可见性和有序性,并详细解释了这些概念如何通过synchronized和volatile实现。此外,还介绍了主内存与本地内存的工作原理。
580

被折叠的 条评论
为什么被折叠?



