隣の炎上プロジェクトのヤパイコード探しを仰せつかったので、とりあえずFindBugsにかけてみると、↓こんなのが出た。 class Hoge { private String foo; public void setFoo( String foo ) { synchronized( this.foo ) { // fooへの更新を1スレッドに制限したい(のだろうと推測) this.foo = foo; <処理...> } } } 「this.foo」のロックで同期化をしようとしているのだけど、synchronizedブロック内でthis.fooを書き換えてしまっている。書き換えた後のthis.fooは誰もロックしていないため、ブロックが複数スレッドから実行できてしまう。以下は検証コード。 class Foo { private String foo = ""; // nullを設定されると