invoke

@JvmName(name = "create")
operator fun <E : Any> invoke(initializer: Supplier<E>): Pool<E>

Creates a new object pool.

Return

New Pool instance (not thread-safe)

Parameters

initializer

Supplier to create new objects when pool is empty


@JvmName(name = "create")
operator fun <E : Any> invoke(initializer: Supplier<E>, finalizer: Consumer<E>): Pool<E>

Creates a new object pool.

Return

New Pool instance

Parameters

initializer

Supplier to create new objects when pool is empty

finalizer

Consumer to reset objects before reuse, should be idempotence, no side effect, and not throwing any exception.