繁体   English   中英

Java:什么时候进行没有“同步”的内存同步?

[英]Java: when does memory synchronization without 'synchronized' happen?

对于具有synchronized方法的类,我们知道,当线程进入此类方法时,它将使用主内存中的对象状态更新其缓存,而当其离开此类方法时,会将其更改写入主内存中的对象状态。

但是,在没有synchronized方法的情况下,线程是否会进入主内存以获取该对象的状态(当然,这是第一次),还是将更改后的状态写回到内存中? 如果是,在什么情况下?

想到的一个显而易见的想法是,当缓存“已满”且变脏时,线程将不得不在读取更多数据之前将其刷新到主内存,或者如果缓存无效,则必须将其丢弃并获取最新数据。来自主存储器的数据。 这个对吗? 还有其他条件会发生这种“自动”内存同步吗?

在传统的O / S(Linux,Windows)中,线程通常会中断并推迟处理器,以使其他线程运行。 当发生此类线程切换时,处理器缓存也将被清除。

另一种情况是易变变量,根本就不会缓存它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM