先进先出对象池java实现
时间: 2023-11-18 18:03:03 浏览: 35
先进先出对象池是一种常用的对象池实现方式,其基本思想是将对象以先进先出的顺序存储在一个队列中,当需要获取对象时,从队列的头部取出一个对象,当需要归还对象时,将对象放回队列的尾部。下面是一个简单的Java实现示例:
```java
import java.util.LinkedList;
public class FIFOObjectPool<T> {
private final LinkedList<T> pool = new LinkedList<>();
private final Object lock = new Object();
public void addObject(T object) {
synchronized (lock) {
pool.addLast(object);
lock.notify();
}
}
public T getObject() throws InterruptedException {
synchronized (lock) {
while (pool.isEmpty()) {
lock.wait();
}
return pool.removeFirst();
}
}
public void returnObject(T object) {
synchronized (lock) {
pool.addLast(object);
lock.notify();
}
}
}
```
在上面的实现中,我们使用了Java的LinkedList来作为对象池的容器,并使用一个锁来保证线程安全。当需要添加对象时,我们使用addLast方法将对象添加到队列的尾部,并使用notify方法通知等待中的线程。当需要获取对象时,我们使用while循环来等待队列非空,并使用removeFirst方法从队列头部获取对象。当需要归还对象时,我们使用addLast方法将对象放回队列的尾部,并使用notify方法通知等待中的线程。
需要注意的是,在使用对象池时,需要确保对象池中的对象都是可重用的,并且在使用完毕后,需要及时将对象归还到对象池中,以便下次使用。