Primitive | Writes up to and including… | ...are made visible to… |
---|---|---|
Object | the end of a synchronized block or method | a thread entering a synchronized block or method for the same object. |
Volatile field | a write to a volatile field | any thread reading that volatile field. |
Thread | a call to Thread.start |
the newly started thread. |
Thread | the final write made by a dying thread | any thread which successfully calls Thread.join on that thread. |
Final field | the initialization of a final field (but only those writes affecting the field and any object it references) | any thread, provided that the constructor of the object containing the field doesn’t write the value of this anywhere eventually visible to other threads |
這些在《java并發(fā)編程實(shí)踐》一書中已經(jīng)有詳細(xì)解釋,特別是對(duì)于ReentrantLock、volatile域以及final域的討論。今天在MenTaLguY的blog上看到這張表,摘錄下。