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 |
---|---|
protected void |
doStart() |
protected void |
doStop() |
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
public Sweeper(Scheduler scheduler, long period)
protected void doStart() throws Exception
doStart
in class AbstractLifeCycle
Exception
protected void doStop() throws Exception
doStop
in class AbstractLifeCycle
Exception
public int getSize()
public boolean offer(Sweeper.Sweepable sweepable)
public boolean remove(Sweeper.Sweepable sweepable)
Copyright © 1995-2016 Webtide. All Rights Reserved.