public Foo getFoo(){
Foo foo = null;
synchronized(fooList){
if(fooList.size() > 0){
foo = fooList.remove(0);
}
}
return foo;
}
foo
はsynchronizedブロックの外で宣言されているため、不良データを返す可能性はありますか?戻り値が同期ブロック外で宣言/返される場合、メソッドはスレッドセーフですか?
これは大丈夫ですが、あなたが与えた例は 'foo'の存在を促しません。あなたの文脈で 'return fooList.remove(0)'と言うだけでいいですか? –
@MarkoTopolnik、これは伝統的なコードです。 :D – user1329572