Quote:
Originariamente inviato da Satshas
Ad esempio ho un'oggetto condiviso in lettura/scrittura oppurtunamente sincronizzata tra più thread:
OggettoA A = new OggettoA();
fare:
OggettoA B = A;
o
FaiQualcosa(A);
sia thred-safe o abbiano bisogno anchessi di sincronizzazzione?
|
Se le letture/scritture sono effettivamente thread-safe rispetto al memory model del linguaggio e quindi entrano in gioco gli effetti delle regole "happens-before" previste per taluni operazioni, allora in teoria non occorre "sincronizzare" (immagino intendi acquisire un lock in via esclusiva).
Ma per essere sicuri bisognerebbe esaminare il codice.
Se ti dovesse servire documentazione di riferimento, ti posto tre risorse utili:
1)
trail sulla concurerncy nei Java Tutorials
2)
javadoc del package java.util.concurrent (la parete titolata "Memory Consistency Properties")
3)
capitolo 17 del Java Language Specifications (Threads and Locks)