>>475
無駄じゃないよ。synchronized必要
setterにsynchronizedを付けるならgetterにも付けないと不釣合いだろ
カッコ悪いだろ

ここを嫁
http://gee.cs.oswego.edu/dl/cpj/jmm.html

final class VFloat {
  private float value;

 final synchronized void set(float f) { value = f; }
 final synchronized float get() { return value; }
}

上記getメソッドにsynchronizedが無い場合、setメソッドでセットされたはずのvalueの値が
別コアで実行される別スレッドから読み出せないことが有りうるんだよ
なぜなら、高度に最適化された優秀で賢いコンパイラは変数をメモリーではなく
CPUのレジスターに割り当てたりすることもあるからだ
synchronizedの入口と出口でマルチコアCPUのコア間の不整合が解消されるしくみだ