码迷,mamicode.com
首页 > 移动开发 > 详细

仿照Android的池化技术

时间:2014-08-13 01:23:14      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:android   java   os   ar   cti   new   size   on   

/**
 * 仿照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的池化技术,布布扣,bubuko.com

仿照Android的池化技术

标签:android   java   os   ar   cti   new   size   on   

原文地址:http://blog.csdn.net/buleriver/article/details/38521989

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!