public class Sweeper extends AbstractLifeCycle implements Runnable
A utility class to perform periodic sweeping of resources.
Sweeper.Sweepable
resources may be added to or removed from a
Sweeper
and the resource implementation decides whether
it should be swept or not.
If a Sweeper.Sweepable
resources is itself a container of
other sweepable resources, it will forward the sweep operation
to children resources, and so on recursively.
Typical usage is to add Sweeper
as a bean to an existing
container:
Server server = new Server(); server.addBean(new Sweeper(), true); server.start();Code that knows it has sweepable resources can then lookup the
Sweeper
and offer the sweepable resources to it:
class MyComponent implements Sweeper.Sweepable { private final long creation; private volatile destroyed; MyComponent(Server server) { this.creation = System.nanoTime(); Sweeper sweeper = server.getBean(Sweeper.class); sweeper.offer(this); } void destroy() { destroyed = true; } @Override public boolean sweep() { return destroyed; } }
Modifier and Type | Class and Description |
---|---|
static interface |
Sweeper.Sweepable
A
Sweeper.Sweepable resource implements this interface to
signal to a Sweeper or to a parent container if it
needs to be swept or not. |
AbstractLifeCycle.AbstractLifeCycleListener
LifeCycle.Listener
Constructor and Description |
---|
Sweeper(Scheduler scheduler,
long period) |
Modifier and Type | Method and Description |
---|---|
int |
getSize() |
boolean |
offer(Sweeper.Sweepable sweepable) |
boolean |
remove(Sweeper.Sweepable sweepable) |
void |
run() |
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, setStopTimeout, start, stop, toString
public Sweeper(Scheduler scheduler, long period)
public int getSize()
public boolean offer(Sweeper.Sweepable sweepable)
public boolean remove(Sweeper.Sweepable sweepable)
Copyright © 2010 - 2020 Adobe. All Rights Reserved