Javaで文字列連結をする場合に「String同士の足し算は効率が悪いのでやめましょう!」というよくある話とともに名前が挙がるStringBufferクラスとStringBuilderクラス。 最近だと「StringBufferクラスよりStringBuilderクラスの方が効率的!」というのも同じくらいよく聞くようになったが、そのたびに「ただしStringBuilderはスレッドセーフでないのでマルチスレッドでは使わないこと」と但し書きのような文言が添えられる。 この注意書きは果たして何を意味しているのだろうか、具体的にどういう場合に問題が起こるのかを調べてみた。StringBufferとStringBuilderの連結のパフォーマンス比較の記事はたくさんあるが、マルチスレッドでの使い分けおよび実行結果の違いについてはあまり見つけられなかったので、今回簡単なマルチスレッドなコードでStr