Java memory model とは

Javaメモリモデルは、Javaプログラミング言語のスレッドがどのようにメモリを介して相互作用するかを記述します。メモリモデルは、コードのシングルスレッド実行の説明とともに、Javaプログラミング言語のセマンティクスを提供します。
1995年に開発されたオリジナルのJavaメモリモデルは、多くの実行時の最適化を防ぎ、コードの安全性を十分に保証していない、壊れたものとして広く認識されていました。 2004年にTiger(Java 5.0)用に発効したJava Specification Request 133(JSR-133)として、Java Community Processを通じて更新されました。