classpublicPriority 3
ObjectPool
com.hypixel.hytale.server.worldgen.util.ObjectPool
4
Methods
4
Public Methods
2
Fields
1
Constructors
Constructors
public
ObjectPool(int size, Supplier<T> supplier)Methods
Public Methods (4)
public
T acquire()public
T apply(T cachedKey)public
<K extends T> void recycle(K v)public
int size()Fields
Private/Package Fields (2)
private
BlockingQueue<T> itemsprivate
Supplier<T> supplierSource Code
package com.hypixel.hytale.server.worldgen.util;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.function.Function;
import java.util.function.Supplier;
import javax.annotation.Nonnull;
public class ObjectPool<T extends Function<T, T>> implements Function<T, T> {
@Nonnull
private final BlockingQueue<T> items;
private final Supplier<T> supplier;
public ObjectPool(int size, Supplier<T> supplier) {
this.items = new ArrayBlockingQueue<>(size);
this.supplier = supplier;
}
public T acquire() {
T v = this.items.poll();
return v == null ? this.supplier.get() : v;
}
public <K extends T> void recycle(@Nonnull K v) {
this.items.offer((T)v);
}
public int size() {
return this.items.size();
}
public T apply(T cachedKey) {
return this.acquire().apply(cachedKey);
}
}