Я строю строку из нескольких частей и хочу использовать для этого либо StringBuffer
, либо StringBuilder
. Из документации Java 5 я вижу, что 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
. Из документации я не могу точно решить, считается ли это использованием нескольких потоков или нет.