【synchronized是可以保证变量的可见性的】

1.我们都知道,jmm的存在导致java的线程其实读取的都是本地的副本(为何出现jmm,其实是为了实现平台一致性),因此会出现可见性问题。

2.猜想:那么加了synchronized后,如果还不能保证可见性,那就没有办法保证可见性了呀!

3.其实,synchronized在修改了本地内存的变量后,解锁前会把本地内存修改的内容刷新到主内存中,确保了共享变量的值是最新的,也就保证了可见性。

----------------

思考xdb中:

select:其实也是上锁,因此必定能读到最新的数据,毕竟是加锁了,是保证可见性的。

get: 修改时加锁,这样子也保证能取到最新的数据,毕竟想修改则加锁,是保证可见性的。

这样子都会得到最新的数据。

你可能感兴趣的:(#,java多线程,java,开发语言)