网上有很多介绍说StringBuilder的复用写法,其中“为了避免并发访问,可以在ThreadLocal中使用StringBuilderHolder”
public class StringBuilderUtil {
private static final ThreadLocal<StringBuilderHelper> threadLocalStringBuilderHelper = new ThreadLocal<StringBuilderHelper>() {
@Override
protected StringBuilderHelper initialValue() {
return new StringBuilderHelper();
}
};
public static final StringBuilder getStringBuilder() {
return threadLocalStringBuilderHelper.get().getStringBuilder();
}
static final class StringBuilderHelper {
final StringBuilder sb;
StringBuilderHelper() {
sb = new StringBuilder();
}
StringBuilder getStringBuilder() {
sb.setLength(0);
return sb;
}
}
}
那么这种写法能否代替StringBuffer?
还是我的理解有误,并发和多线程不一样??