1 package jfun.yan.factory; 2 3 13 public abstract class SimplePool<T> implements Pool<T> { 14 public T getInstance(Factory<T> factory) { 15 synchronized(getMutex()){ 16 T ret = get(); 17 if(ret==null){ 18 ret = factory.create(); 19 set(ret); 20 } 21 return ret; 22 } 23 } 24 25 public T getPooledInstance(T def) { 26 synchronized(getMutex()){ 27 return ifnull(get(), def); 28 } 29 } 30 31 public boolean isPooled() { 32 synchronized(getMutex()){ 33 return get()!=null; 34 } 35 } 36 protected static <X> X ifnull(X obj, X def){ 37 return obj==null?def:obj; 38 } 39 43 public abstract T get(); 44 48 public abstract void set(T val); 49 50 53 protected abstract Object getMutex(); 54 } 55 | Popular Tags |