scala-pool
Members list
Packages
package io.github.andrebeat.pool
This library provides classes for dealing with object pooling that allow:
This library provides classes for dealing with object pooling that allow:
- blocking/non-blocking object acquisition
- object invalidation
- capping the number of pooled objects
- creating new objects lazily, as needed
- health checking
- time-based pool eviction (idle instances)
- GC-based pool eviction (soft and weak references)
- efficient thread-safety
==Overview== In order create a new io.github.andrebeat.pool.Pool the constructor method should be used like so
scala> val pool = Pool(4, () => new Object)
pool: io.github.andrebeat.pool.SimplePool[Object] = _
scala> val lease = pool.acquire()
lease: io.github.andrebeat.pool.Lease[Object] = _
scala> lease.release()
Additionally, in order to avoid manually releasing the lease after its used, you can use the use
method on the lease:
scala> val pool = Pool(4, () => new Object)
pool: io.github.andrebeat.pool.SimplePool[Object] = _
scala> val lease = pool.acquire()
lease: io.github.andrebeat.pool.Lease[Object] = _
scala> lease(println) // the lease is released automatically after its used
java.lang.Object@7970d6d
Attributes
In this article