/** * */ package ecologylab.generic; /** * ResourcePool for StringBuilders. * * @author Zachary O. Toups (zach@ecologylab.net) * */ public class StringBuilderPool extends ResourcePoolWithSize<StringBuilder> { /** * * @param builderSize * the size of StringBuilders created within this pool. */ public StringBuilderPool(int builderSize) { this(DEFAULT_POOL_SIZE, NEVER_CONTRACT, builderSize); } public StringBuilderPool(int poolSize, int builderSize) { this(poolSize, NEVER_CONTRACT, builderSize); } /** * @param poolSize */ public StringBuilderPool(int poolSize, int minimumCapacity, int builderSize) { this(poolSize, minimumCapacity, builderSize, false); } public StringBuilderPool(int poolSize, int minimumCapacity, int builderSize, boolean checkMultiRelease) { super(poolSize, minimumCapacity, builderSize, checkMultiRelease); } /** * Alias for acquire(). * * @return */ public StringBuilder nextBuffer() { return this.acquire(); } /** * @see ecologylab.generic.ResourcePool#clean(java.lang.Object) */ @Override protected void clean(StringBuilder objectToClean) { objectToClean.setLength(0); } /** * @see ecologylab.generic.ResourcePool#generateNewResource() */ @Override protected StringBuilder generateNewResource() { return new StringBuilder(this.resourceObjectCapacity); } public String releaseAndGetString(StringBuilder objectToRelease) { String s = StringTools.toString(objectToRelease); this.release(objectToRelease); return s; } public static void main(String[] args) { StringBuilderPool sbp = new StringBuilderPool(8, 2, 12, true); System.out.println("0 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); StringBuilder sb1 = new StringBuilder("asdf"); StringBuilder sb2 = sb1; StringBuilder sb3 = sb1; sbp.release(sb1); System.out.println("1 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); sbp.release(sb2); System.out.println("2 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); sbp.release(sb3); System.out.println("3 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); StringBuilder sb4 = sbp.acquire(); System.out.println("4 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); StringBuilder sb5 = sb4; sbp.release(sb5); System.out.println("5 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); sbp.release(sb4); System.out.println("6 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); StringBuilder sb6 = sbp.acquire(); System.out.println("7 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); StringBuilder sb7 = sbp.acquire(); System.out.println("8 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); StringBuilder sb8 = sbp.acquire(); System.out.println("9 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); sbp.release(sb6); System.out.println("10 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); sbp.release(sb7); System.out.println("11 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); sbp.release(sb8); System.out.println("12 "+sbp.getPoolSize() + "/" + sbp.getCapacity()); } }