Class SimulationExecutor
java.lang.Object
java.util.concurrent.AbstractExecutorService
java.util.concurrent.ThreadPoolExecutor
fr.ifremer.isisfish.simulator.launcher.SimulationExecutor
- All Implemented Interfaces:
Executor,ExecutorService
Un executor qui utilise un certain type de
SimulatorLauncher pour
executer les jobs soumis dans la queue de SimulationService
Les fonctionnalites en plus par rapport a un ThreadPoolExecutor sont:
- la possibilite de suspendre l'executor puis ensuite de le relancer
- l'utilisation de beforeExecute pour fixer le
SimulatorLauncherdu job
Il est aussi possible d'ecoute l'etat de l'attribut pause
- Version:
- $Revision$ Last update : $Date$ By : $Author$
- Author:
- poussin
-
Nested Class Summary
Nested classes/interfaces inherited from class java.util.concurrent.ThreadPoolExecutor
ThreadPoolExecutor.AbortPolicy, ThreadPoolExecutor.CallerRunsPolicy, ThreadPoolExecutor.DiscardOldestPolicy, ThreadPoolExecutor.DiscardPolicy -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intle nombre de thread utilise avant la pauseprotected SimulatorLauncherle launcher a utilise pour les simulationsprotected booleanvrai si cet executor est en pauseprotected PropertyChangeSupportprotected SimulationServicele simulation service qui a cree cet executor -
Constructor Summary
ConstructorsConstructorDescriptionSimulationExecutor(SimulationService simulationService, SimulatorLauncher launcher, SimulationQueue workQueue) -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidaddPropertyChangeListener(String propertyName, PropertyChangeListener listener) protected voidbeforeExecute(Thread t, Runnable r) Met les threads en attente si pause est vrai, et fixe leSimulatorLaunchera utiliser pour par la tache.booleanisPause()voidpause()demande au thread d'arreter de prendre de nouvelle tachevoidvoidremovePropertyChangeListener(String propertyName, PropertyChangeListener listener) voidresume()indique au thread de recommencer a prendre de nouvelle tachevoidsetPause(boolean pause) Change la valeur de la variable pause, si pause est alors vrai notifie tous les threads en attenteMethods inherited from class java.util.concurrent.ThreadPoolExecutor
afterExecute, allowCoreThreadTimeOut, allowsCoreThreadTimeOut, awaitTermination, execute, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getQueue, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isShutdown, isTerminated, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, remove, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setRejectedExecutionHandler, setThreadFactory, shutdown, shutdownNow, terminated, toStringMethods inherited from class java.util.concurrent.AbstractExecutorService
invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor, submit, submit, submit
-
Field Details
-
propertyListeners
-
pause
protected boolean pausevrai si cet executor est en pause -
lastCorePoolSize
protected int lastCorePoolSizele nombre de thread utilise avant la pause -
simulationService
le simulation service qui a cree cet executor -
launcher
le launcher a utilise pour les simulations
-
-
Constructor Details
-
SimulationExecutor
public SimulationExecutor(SimulationService simulationService, SimulatorLauncher launcher, SimulationQueue workQueue)
-
-
Method Details
-
getSimulationService
-
getLauncher
-
addPropertyChangeListener
-
addPropertyChangeListener
-
removePropertyChangeListener
-
removePropertyChangeListener
-
beforeExecute
Met les threads en attente si pause est vrai, et fixe leSimulatorLaunchera utiliser pour par la tache. Si la tache a deja unSimulatorLauncherd'assigne, on ne fait pas la tache- Overrides:
beforeExecutein classThreadPoolExecutor- Parameters:
t- le thread qui va executer la tacher-
-
isPause
public boolean isPause() -
pause
public void pause()demande au thread d'arreter de prendre de nouvelle tache -
resume
public void resume()indique au thread de recommencer a prendre de nouvelle tache -
setPause
public void setPause(boolean pause) Change la valeur de la variable pause, si pause est alors vrai notifie tous les threads en attente- Parameters:
pause- pause value to set
-