Peter Stibrany wrote:
Ten slajd, ktory ste poslali, podla mna nie je spravny: synchronized nehovori kedy sa ma co flushovat do hlavnej pamate. Moze sa stat, ze mate metodu synchronized, ale nic sa neflushne, jednoducho preto, ze jvm zisti, ze objekt na ktorom synchronizujete, je viditelny iba z jedneho threadu. Dosledkom je, ze tento kod "synchronized (new Object());" neurobi vobec nic, ziadny flush. Ako sa uvadza v prednaske z JavaOne 2006 ( http://developers.sun.com/learning/javaoneonline/2006/coreplatform/TS-1630.html), pohlad na synchronized ako na 'flushovanie', je mylny.
Podle toho co se pise v /Java Language Specification 3rd Edtion - /http://java.sun.com/docs/books/jls/third_edition/html/memory.html
To souhlasi.
Happens before order se tranzitivne prenasi pres spolecny zamek a volatile promene (to plati od Javy 1.5, do te doby to platilo jen pro jednu konkretni promenou). Dale happens before plati pro vsechny objekty dosazitelne z final filedu (pokud na ne pristupujete pres tyto fieldy a ne oklikou).

     Lukas




______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email ______________________________________________________________________

Odpovedet emailem