diff --git a/modules/utils/src/main/java/org/springside/modules/utils/StringBuilderHolder.java b/modules/utils/src/main/java/org/springside/modules/utils/StringBuilderHolder.java new file mode 100644 index 00000000..6174e840 --- /dev/null +++ b/modules/utils/src/main/java/org/springside/modules/utils/StringBuilderHolder.java @@ -0,0 +1,38 @@ +package org.springside.modules.utils; + +/** + * 参考BigDecimal, 可重用的StringBuilder, 节约StringBuilder内部的char[] + * + * 参考下面的示例代码将其保存为ThreadLocal. + * + *
+ * private static final ThreadLocal threadLocalStringBuilderHolder = new ThreadLocal() {
+ * 	@Override
+ * 	protected StringBuilderHelper initialValue() {
+ * 		return new StringBuilderHelper(256);
+ * 	}
+ * };
+ * 
+ * StringBuilder sb = threadLocalStringBuilderHolder.get().resetAndGetStringBuilder();
+ * 
+ * 
+ * + * @author calvin + * + */ +public class StringBuilderHolder { + + private final StringBuilder sb; + + public StringBuilderHolder(int capacity) { + sb = new StringBuilder(capacity); + } + + /** + * 重置StringBuilder内部的writerIndex, 而char[]保留不动. + */ + public StringBuilder resetAndGetStringBuilder() { + sb.setLength(0); + return sb; + } +} \ No newline at end of file