>>108
static なメソッドに synchronized をつけると
Class レベルの同期になるというのも、危険な理由のひとつでは。

あと >インスタンス変数を書き変えるケースの他 
この部分なんだけど immutable な変数(Stringとか)ならOKでは?

ここら辺を参考にしてみては?
Java並列プログラミングTips
ttp://www.netgene.co.jp/java/concurrentTips.html