private MyObjectName mNext; private static Object gPoolSync = new Object(); private static MyObjectName gPool; private static int gPoolSize = 0; private static final int MAX_POOL_SIZE = 10; public static MyObjectName obtain() { synchronized (gPoolSync) { if (gPool != null) { MyObjectName m = gPool; gPool = m.mNext; m.mNext = null; gPoolSize--; return m; } } return new MyObjectName(); } public void recycle() { synchronized (gPoolSync) { if (gPoolSize < MAX_POOL_SIZE) { // Perform object data cleaning and data releasing before recycling clearForRecycle(); mNext = gPool; gPool = this; gPoolSize++; } } }
Saturday, January 21, 2012
Android (Java) object pool
There are many ways to implement an object pool. Here's the way it's implemented in some classes in Android (Message, MotionEvent, Parcel, VelocityTracker):
Labels:
Android
Subscribe to:
Post Comments (Atom)
1 comment:
Very neat approach, indeed. Before I saw this example - I would implement object pool using some sort of queue or stack classes, while now I see that linked list is even better :)
Post a Comment