Java の理論と実践: アトミックで行く
http://www.ibm.com/developerworks/jp/java/library/j-jtp11234/

このページにある、リスト3: SimulatedCAS クラスの compareAndSwap について質問です。
SimulatedCAS のコードのすぐ下にある説明書きに、
「CASベースの並行アルゴリズムは、スレッドがロックを待つ必要が全くないので、lock-freeと呼ばれます」
という記述があります。

しかし SimulatedCAS の compareAndSwap メソッドは synchronized メソッドに
なっています。Simulated って書いてあるから実際使うときは違うやつ使うのか
なと思いきや、 リスト4 のコードで思いっきり使ってあります。

compare-and-swap アルゴリズムを真似たプログラムは、 synchronized であっても
ロックされないように最適化されるということでしょうか?