/* Copyright (C) 2011 The University of Michigan This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Please send inquiries to powertutor@umich.edu */ package edu.umich.PowerTutor.util; import java.util.Vector; /* The aim of this class is to reduce the amount of objects that need to be * created and destroyed every iteration. If we can avoid having to allocate * objects on the heap we can ease the job of the garbage collector and be * more efficient. */ public class Recycler<T> { private Vector<T> list; private int avail; public Recycler() { list = new Vector<T>(); avail = 0; } public synchronized T obtain() { if(avail == 0) { return null; } return list.get(--avail); } public synchronized void recycle(T a) { if(avail < list.size()) { list.set(avail++, a); } else { list.add(a); } } }