仿照Android的池化技术

/**
 * 仿照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)