Class 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 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;
         }
     }
     
    • Constructor Detail

      • Sweeper

        public Sweeper​(Scheduler scheduler,
                       long period)
    • Method Detail

      • doStart

        protected void doStart()
                        throws java.lang.Exception
        Overrides:
        doStart in class AbstractLifeCycle
        Throws:
        java.lang.Exception
      • doStop

        protected void doStop()
                       throws java.lang.Exception
        Overrides:
        doStop in class AbstractLifeCycle
        Throws:
        java.lang.Exception
      • getSize

        public int getSize()
      • run

        public void run()
        Specified by:
        run in interface java.lang.Runnable