Interface ServiceThreadHandling
- All Known Implementing Classes:
AbstractADEPT2Service,AbstractAuthenticatedService,AbstractConfigurableAuthenticatedService,AbstractConfigurableService,AbstractEventManager,AbstractGUIManager,AbstractNonPrivilegedService,AbstractRegistry,AuthenticatedInjectedService,BootstrapRegistry,ClusterNode,DefaultEventManager,DefaultProcessCheckService,EmbdServContHTTPService,EmbeddedServletService,InitialisedInjectedService,InstanceToInstanceRegistry,LocalServiceRegistry,ModelFactoryRegistry,MultiplexingClientService,NullGUIManager,NullHTTPService,PluginRegistry,PVPUpdateManager,RegistryProviderConf,RegistryProviderDb,RemoteHTMLGUIManager,ServiceRegistry,TwoPhaseBootstrap
public interface ServiceThreadHandling
This interface provides methods for handling threads properly in services.
Usually an implementation of
ADEPT2Service does not allow access
from the outside while not running. However, the thread initialising and
shutting down needs to access the service. This can be achieved using this
interface.-
Method Summary
Modifier and TypeMethodDescriptionbooleanStores the current thread as privileged when the service has not been started or is currently shut down.voidsignalShutdown(boolean emergency) Privileges the current thread, sets the shutdown flag and in case of emergency interrupts all active threads without the privileged ones since they are shutting down this service.voidSignals the successful start by counting down the latch and removing privileged threads.voidRevokes the privileges of the current thread that is, it may not access the service any more in case it is not started or currently shut down.
-
Method Details
-
privilegeThread
boolean privilegeThread()Stores the current thread as privileged when the service has not been started or is currently shut down. Otherwise this method just returns. If you privilege threads from a thread pool, considerunprivilegingthem again.The thread running the constructor and the thread signalling the shutdown is implicitly privileged.
- Returns:
- Whether the designated thread has really been privileged by this
call. In this case the caller must unprivilege the thread. If the
thread has already been privileged,
falsewill be returned and the caller must notunprivilegethe thread.
-
unprivilegeThread
void unprivilegeThread()Revokes the privileges of the current thread that is, it may not access the service any more in case it is not started or currently shut down. If the current thread is not privileged, this method just returns.
This is only useful for threads from a thread pool. Besides, all threads are implicitly unprivileged as soon as this service is started. -
signalStart
void signalStart()Signals the successful start by counting down the latch and removing privileged threads.
This method is called implicitly by the registry. If the service is not started by the registry, this method will have to be called at the end of the start-method. -
signalShutdown
void signalShutdown(boolean emergency) Privileges the current thread, sets the shutdown flag and in case of emergency interrupts all active threads without the privileged ones since they are shutting down this service.
This method is called implicitly by the registry. If the service is not started by the registry, this method will have to be called at the beginning of the shutdown or emergency-shutdown-method.- Parameters:
emergency- Flag whether this is an emergency shutdown and the active sessions should be interrupted.
-