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