equal
deleted
inserted
replaced
|
1 package org.sipdroid.net.tools; |
|
2 |
|
3 import java.util.ArrayList; |
|
4 |
|
5 public abstract class ObjectPool<E> { |
|
6 private ArrayList<Object> locked, unlocked; |
|
7 |
|
8 ObjectPool(int size){ |
|
9 locked = new ArrayList<Object>(size); |
|
10 unlocked = new ArrayList<Object>(size); |
|
11 } |
|
12 |
|
13 public int getPoolSize() { |
|
14 return locked.size() + unlocked.size(); |
|
15 } |
|
16 |
|
17 abstract Object create(); |
|
18 abstract boolean validate( Object o ); |
|
19 synchronized Object checkOut(){ |
|
20 if(unlocked.size() > 0){ |
|
21 Object cur = unlocked.get(0); |
|
22 unlocked.remove(cur); |
|
23 locked.add(cur); |
|
24 return(cur); |
|
25 } |
|
26 // no objects available, create a new one |
|
27 Object o = create(); |
|
28 locked.add(o); |
|
29 return(o); |
|
30 } |
|
31 |
|
32 synchronized void checkIn( Object o ) { |
|
33 locked.remove( o ); |
|
34 unlocked.add(o); |
|
35 } |
|
36 |
|
37 } |