Object pool pattern: Difference between revisions

Content deleted Content added
mNo edit summary
Vip saran (talk | contribs)
m Java code example: fixed methods visibility, case in getObject() when all available PooledObjects have expired and removed unnecessary cleaning of objects returned from the available map (which only has clean objects)
Line 187:
public synchronized static PooledObject getObject() {
long now = System.currentTimeMillis();
if (!available.isEmpty()) {
PooledObject po = new PooledObject();
push(inUse, po, now);
return po;
} else {
for (Map.Entry<PooledObject, Long> entry : available.entrySet()) {
if (now - entry.getValue() > expTime) { //object has expired
Line 198 ⟶ 193:
} else {
PooledObject po = popElement(available, entry.getKey());
cleanUp(po);
push(inUse, po, now);
return po;
Line 204 ⟶ 198:
}
}
 
return null;
// either no PooledObject is available or each has expired, so return a new one
}
return createPooledObject(now);
}
private synchronized static PooledObject createPooledObject(long now) {
PooledObject po = new PooledObject();
push(inUse, po, now);
return po;
}
 
private synchronized static void push(HashMap<PooledObject, Long> map,
PooledObject po, long now) {
Line 218 ⟶ 220:
}
publicprivate static PooledObject popElement(HashMap<PooledObject, Long> map) {
Map.Entry<PooledObject, Long> entry = map.entrySet().iterator().next();
PooledObject key= entry.getKey();
Line 224 ⟶ 226:
map.remove(entry.getKey());
return key;
}
publicprivate static PooledObject popElement(HashMap<PooledObject, Long> map, PooledObject key) {
map.remove(key);
return key;
}
Line 238:
po.setTemp3(null);
}
}