Java:没有';同步';发生

Java:没有';同步';发生,java,synchronization,Java,Synchronization,对于一个拥有synchronized方法的类,我们知道当线程进入这些方法时,它会用主存中的对象状态更新其缓存,当它离开这些方法时,它会将其更改写入主存中的对象状态 但是,如果没有synchronized方法,线程会进入主存获取对象的状态(当然第一次除外),还是将更改后的状态写回内存?如果是,在什么条件下 我想到的一个明显的想法是,当缓存“满”且脏时,线程必须在读取更多数据之前将其刷新到主存,或者如果缓存无效,则必须丢弃它并从主存获取最新数据。这是正确的吗?在其他情况下,会发生这种“自动”内存同步

对于一个拥有
synchronized
方法的类,我们知道当线程进入这些方法时,它会用主存中的对象状态更新其缓存,当它离开这些方法时,它会将其更改写入主存中的对象状态

但是,如果没有
synchronized
方法,线程会进入主存获取对象的状态(当然第一次除外),还是将更改后的状态写回内存?如果是,在什么条件下

我想到的一个明显的想法是,当缓存“满”且脏时,线程必须在读取更多数据之前将其刷新到主存,或者如果缓存无效,则必须丢弃它并从主存获取最新数据。这是正确的吗?在其他情况下,会发生这种“自动”内存同步吗?

在传统的O/S(linux、windows)中,线程通常会被中断并延迟处理器,以让其他线程运行。当发生这样的线程切换时,处理器缓存也会被清除


另一种情况是易失性变量,它们根本不被缓存。

首先查找“Java5内存模型”。享受吧@热舔——这正是我试图避免的一种享受。:)有时没有捷径。
volatile
引用几乎肯定可以作为这里的答案。