Back to project page Jello.
The source code is released under:
Apache License
If you think the Android project Jello listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * Copyright (C) 2009 The Android Open Source Project *// w ww . j a v a2s. co m * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.util; /** * @hide */ class FinitePool<T extends Poolable<T>> implements Pool<T> { /** * Factory used to create new pool objects */ private final PoolableManager<T> mManager; /** * Maximum number of objects in the pool */ private final int mLimit; /** * If true, mLimit is ignored */ private final boolean mInfinite; /** * Next object to acquire */ private T mRoot; /** * Number of objects in the pool */ private int mPoolCount; FinitePool(final PoolableManager<T> manager) { mManager = manager; mLimit = 0; mInfinite = true; } FinitePool(final PoolableManager<T> manager, final int limit) { if (limit <= 0) throw new IllegalArgumentException("The pool limit must be > 0"); mManager = manager; mLimit = limit; mInfinite = false; } public T acquire() { T element; if (mRoot != null) { element = mRoot; mRoot = element.getNextPoolable(); mPoolCount--; } else element = mManager.newInstance(); if (element != null) { element.setNextPoolable(null); mManager.onAcquired(element); } return element; } public void release(final T element) { if (mInfinite || mPoolCount < mLimit) { mPoolCount++; element.setNextPoolable(mRoot); mRoot = element; } mManager.onReleased(element); } }