Class Daemon
- java.lang.Object
-
- org.simpleframework.common.thread.Daemon
-
- All Implemented Interfaces:
java.lang.Runnable
- Direct Known Subclasses:
ActionDistributor,LeaseCleaner,ServerCleaner
public abstract class Daemon extends java.lang.Object implements java.lang.RunnableTheDaemonobject provides a named thread which will execute therunmethod when started. This offers some convenience in that it hides the normal thread methods and also allows the object extending this to provide the name of the internal thread, which is given an incrementing sequence number appended to the name provided.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classDaemon.RunnableDelegateTheRunnableDelegateobject is used to actually invoke therunmethod.
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.atomic.AtomicBooleanactiveThis is used to determine if the daemon is active.private java.lang.RunnabledelegateThis is the internal thread that is executed by this.private DaemonFactoryfactoryThis is the internal thread used by this daemon instance.private java.util.concurrent.atomic.AtomicReference<java.lang.Thread>referenceThis is the current thread executing this service.
-
Constructor Summary
Constructors Modifier Constructor Description protectedDaemon()Constructor for theDaemonobject.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidinterrupt()This is used to interrupt the internal thread.booleanisActive()This is used to determine if the runner is active.voidstart()This is used to start the internal thread.voidstop()This method is used to stop the thread without forcing it to stop.
-
-
-
Field Detail
-
reference
private final java.util.concurrent.atomic.AtomicReference<java.lang.Thread> reference
This is the current thread executing this service.
-
factory
private final DaemonFactory factory
This is the internal thread used by this daemon instance.
-
active
private final java.util.concurrent.atomic.AtomicBoolean active
This is used to determine if the daemon is active.
-
delegate
private final java.lang.Runnable delegate
This is the internal thread that is executed by this.
-
-
Constructor Detail
-
Daemon
protected Daemon()
Constructor for theDaemonobject. This will create the internal thread and ensure it is a daemon. When it is started the name of the internal thread is set using the name of the instance as taken fromgetName. If the name provided is null then no name is set for the thread.
-
-
Method Detail
-
isActive
public boolean isActive()
This is used to determine if the runner is active. If it is not active then it is assumed that no thread is executing. Also, if this is extended then any executing thread to stop as soon as this method returns false.- Returns:
- this returns true if the runner is active
-
start
public void start()
This is used to start the internal thread. Once started the internal thread will execute therunmethod of this instance. Aside from starting the thread this will also ensure the internal thread has a unique name.
-
interrupt
public void interrupt()
This is used to interrupt the internal thread. This is used when there is a need to wake the thread from a sleeping or waiting state so that some other operation can be performed. Typically this is required when killing the thread.
-
stop
public void stop()
This method is used to stop the thread without forcing it to stop. It acts as a means to deactivate it. It is up to the implementor to ensure that theisActivemethod is checked to determine whether it should continue to run.
-
-