J'ai lu que le code à l'intérieur d'un bloc synchronisé est conforme à la sémantique 'arrive avant' de sorte que toutes les valeurs écrites à l'intérieur d'un bloc synchronisé soient visibles aux autres threads successivement. En outre, j'ai lu que les caches ne sont effacées qu'avec la fin du bloc synchronisé. Comment la sémantique ci-dessus de «se produit avant» doit-elle être appliquée dans le scénario décrit ci-dessous si seulement les caches sont vidées de la terminaison de bloc synchronisée?Comportement de
Fil A a une référence à l'objet C et modifie un champ de C dans son code synchrone synchronisé sur C. fil B a également une référence à l'objet C. Filetage maintenant A est mis en suspension avant le code synchronisé est terminé . Le thread B passe à l'action et accède au champ de l'objet C dans le code sans synchronisation sur C.
Le thread B est-il garanti de voir les modifications apportées par le thread A?