volatile的理解
被volatile修饰的变量被某一个线程修改了之后,会将新值存回jvm主存中,而cpu中的缓存并没有获取到修改后的值,所以volatile就通过cpu指令,标记这个变量为share,从而使该变量被修改后,cpu的cache缓存行置为无效,需要重新读内存,保证可见性与其他线程的立即可见性
被volatile修饰的变量被某一个线程修改了之后,会将新值存回jvm主存中,而cpu中的缓存并没有获取到修改后的值,所以volatile就通过cpu指令,标记这个变量为share,从而使该变量被修改后,cpu的cache缓存行置为无效,需要重新读内存,保证可见性与其他线程的立即可见性