Cacheの作り方とsynchronized method

マルチスレッド環境下でCache機能を作る時、同時更新を防ぐためにsynchronizedをsetterに付け、getterからsetterを呼び出してあげる。
パフォーマンスのためgetterにはsynchronizedをつけない。getter内でsetterを呼ぶかどうか判断するときも、別スレッドが同時に判断した可能性があるので、setter内で再度同じ判断をしなければならない。

-Java