上面这个你给实现的代码里,ObjectPool对象池类你帮我写一下
时间: 2024-02-12 17:08:48 浏览: 57
Unity 对象池插件 Easy ObjectPool 2.0
好的,下面是一个简单的 ObjectPool 对象池类的实现,供您参考:
```java
import java.util.LinkedList;
public class ObjectPool<T> {
private final int maxSize;
private final LinkedList<T> pool;
public ObjectPool(int maxSize) {
this.maxSize = maxSize;
pool = new LinkedList<>();
}
public synchronized T acquire() throws InterruptedException {
while (pool.isEmpty()) {
wait();
}
return pool.removeFirst();
}
public synchronized void release(T t) {
if (pool.size() < maxSize) {
pool.addLast(t);
notifyAll();
}
}
}
```
这个类使用泛型 T,可以存储任何类型的对象。它包含两个主要的方法:
- `acquire()`:获取对象池中的一个对象。如果对象池为空,线程会等待,直到有可用的对象。
- `release(T t)`:将一个对象放回对象池中。如果对象池已满,该对象将被丢弃。
这个对象池类使用了一个 LinkedList 来存储对象,它的最大大小由构造函数中传入的参数 maxSize 决定。当对象池为空时,线程会等待,直到有可用的对象。当一个对象被放回对象池时,其他等待的线程会被唤醒,以便它们可以获取到可用的对象。
阅读全文