Package org.eclipse.jetty.util.thread
Class Sweeper
- java.lang.Object
-
- org.eclipse.jetty.util.component.AbstractLifeCycle
-
- org.eclipse.jetty.util.thread.Sweeper
-
- All Implemented Interfaces:
java.lang.Runnable
,LifeCycle
public class Sweeper extends AbstractLifeCycle implements java.lang.Runnable
A utility class to perform periodic sweeping of resources.
Sweeper.Sweepable
resources may be added to or removed from aSweeper
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 theSweeper
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; } }
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
Sweeper.Sweepable
ASweeper.Sweepable
resource implements this interface to signal to aSweeper
or to a parent container if it needs to be swept or not.-
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.atomic.AtomicReference<java.util.List<Sweeper.Sweepable>>
items
private static Logger
LOG
private long
period
private Scheduler
scheduler
private java.util.concurrent.atomic.AtomicReference<Scheduler.Task>
task
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
activate()
private void
deactivate()
protected void
doStart()
protected void
doStop()
int
getSize()
boolean
offer(Sweeper.Sweepable sweepable)
boolean
remove(Sweeper.Sweepable sweepable)
void
run()
-
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, setStopTimeout, start, stop, toString
-
-
-
-
Field Detail
-
LOG
private static final Logger LOG
-
items
private final java.util.concurrent.atomic.AtomicReference<java.util.List<Sweeper.Sweepable>> items
-
task
private final java.util.concurrent.atomic.AtomicReference<Scheduler.Task> task
-
scheduler
private final Scheduler scheduler
-
period
private final long period
-
-
Constructor Detail
-
Sweeper
public Sweeper(Scheduler scheduler, long period)
-
-
Method Detail
-
doStart
protected void doStart() throws java.lang.Exception
- Overrides:
doStart
in classAbstractLifeCycle
- Throws:
java.lang.Exception
-
doStop
protected void doStop() throws java.lang.Exception
- Overrides:
doStop
in classAbstractLifeCycle
- Throws:
java.lang.Exception
-
getSize
public int getSize()
-
offer
public boolean offer(Sweeper.Sweepable sweepable)
-
remove
public boolean remove(Sweeper.Sweepable sweepable)
-
run
public void run()
- Specified by:
run
in interfacejava.lang.Runnable
-
activate
private void activate()
-
deactivate
private void deactivate()
-
-