複数の文字列から文字列を構築していますが、StringBuffer
またはStringBuilder
のいずれかを使用します。 Java 5つのドキュメントから、私は可能な場合StringBuilder
がStringBuilder
のJava 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
という独自の別個のインスタンスを持ちます。ドキュメントから、私はこれが複数のスレッドによって使用されるかどうかを決めることはできません。
インスタンス変数には触れないので、foo()を静的メソッドにするといくらかのメリットがあるかもしれません。 – Kip
@Kip:クラスに依存します。しかし、多型演算を実行し、そのメソッドを静的にすると、これが妨げられることがあります。 – OscarRyz
String.concatを使用する方が高速ですが、これは単なる例にすぎません。 –