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 |
|---|---|
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, toStringpublic 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