JSR133—Java Memory Model

2017-07-12  本文已影响26人  远o_O

JSR:https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html
很早的译文:http://snake1987.iteye.com/blog/983254

What is a memory model, anyway?

Do other languages, like C++, have a memory model?

What is JSR 133 about?

JSR133的目标包括:

What is meant by reordering?

Synchronization做了什么?

这意味着一个线程的任何存储操作对于任何线程,在他进入一个被同一个monitor保护同步块之后并且在退出同步块之前是可见的,因为所有的存储操作happen before这个release,并且release happen before这个acquire。
另一个暗示是:下面的代码是不可用的
synchronized (new Object()) {}
This is actually a no-op,并且你的编译器可以将他完全一出,因为编译器知道不可能有其他的线程会synchronize在这个monitor。你不得不为一个想要看到另一个线程结果的线程建立一个happens before关系

注意:如果需要一个合适的happen-before关系,所有的线程synchronize在同一个monitor是很重要的。

上一篇 下一篇

猜你喜欢

热点阅读