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