複数の部分から文字列を作成していて、どちらStringBufferかを使用したい、または使用したいStringBuilder。Java 5 docs から、可能な場合はそれが推奨されることがわかりますが、次StringBuilderの点に注意してください。
のインスタンスは
StringBuilder、複数のスレッドで安全に使用できません。
StringBuilderこのステートメントから、単一のインスタンスを複数のスレッドで共有するべきではないことがわかります。しかし、次の場合はどうでしょうか。
//Is this safe?
//foo() is called simultaneously by multiple threads
String foo(String a, String b) {
return new StringBuilder(a).append(b).toString();
}
ここでは、StringBuilderクラスを同時に使用して関数内に同時に複数のスレッドが存在する可能性がありますが (たとえば、静的変数が存在する場合は、その変数への同時アクセスなど)、各スレッドは独自のStringBuilder. ドキュメントから、これが複数のスレッドによる使用としてカウントされるかどうかを判断することはできません。