図1. ローカルのStringBufferを用いてStringの連結を行う もし私たちが変数sbをよく調べれば、concatBufferメソッドの境界内でのみ生存すると言う事をすぐに見つけられます。さらにsbに対する参照は、それが宣言されたスコープから"抜け出す"事は絶対にありません。従って、他のスレッドがsbへのアクセスを行う方法は存在しないのです。これを踏まえると、私たちはsbに対するロック保護を除去できると言う事がわかります。 一見するとロックの除去により、ロックが本当に必要とされない場所においては、あらゆる同期のペナルティ無しにスレッドセーフなコードを書く事が出来るように見えます。「それが本当に働いているのかどうか」と言う疑問については、ベンチマークで詳しく調べることにしましょう。 バイアスド・ロックの説明 バイアスド・ロックは、生存中に一つ以上のスレッドにアクセスされるロックはほ
