>>516
簡単にフォーリングっぽく言うと、

原子性は、double と long はとにかく同期しないとだめということ。
2バイトで構成されるであろうこれらは、
1バイトだけ変化したとんでもないモノが読めてしまう可能性がある。

可視性は、読み取り側も同期しないといけないこと。
ここで、同じオブジェクトのロックを取得することが重要。
static メソッドの synchronized は
そのクラスオブジェクトのロックを取得するシンタックスシュガー