/** * 仿照Android池化技术 * @author fgtian * */ public class ObjectCacheTest { public static class ObjectItem { private static int sPoolSize = 0; private static final int MAX_CACHE = 10; private static final Object sPoolLock = new Object(); private static ObjectItem sPool = null; private ObjectItem mNext = null; private int mValue; public static ObjectItem obtain() { synchronized (sPoolLock) { if (null != sPool) { ObjectItem item = sPool; sPool = item.mNext; item.mNext = null; --sPoolSize; return item; } } return new ObjectItem(); } public static ObjectItem obtain(int value) { synchronized (sPoolLock) { if (null != sPool) { ObjectItem item = sPool; sPool = item.mNext; item.mNext = null; --sPoolSize; item.mValue = value; return item; } } return new ObjectItem(value); } public void recycle() { synchronized (sPoolLock) { if (sPoolSize < MAX_CACHE) { mValue = 0; this.mNext = sPool; sPool = this; sPoolSize++; } } } public ObjectItem() { } public ObjectItem(int value) { mValue = value; } @Override public String toString() { return String.valueOf(mValue); } } public static final void main(String[] args) { ObjectItem item1 = ObjectItem.obtain(1); item1.recycle(); ObjectItem item2 = ObjectItem.obtain(3); if (item1 == item2) { System.out.println("YES, USE THE SAME OBJECT"); } else { System.out.println("ERROR"); } } }
仿照Android的池化技术
时间: 2024-10-12 14:07:25