Package gov.nasa.worldwind.util
Class BasicScheduledTaskService
- java.lang.Object
-
- gov.nasa.worldwind.avlist.AVListImpl
-
- gov.nasa.worldwind.WWObjectImpl
-
- gov.nasa.worldwind.util.BasicScheduledTaskService
-
- All Implemented Interfaces:
AVList
,MessageListener
,ScheduledTaskService
,WWObject
,java.beans.PropertyChangeListener
,java.lang.Thread.UncaughtExceptionHandler
,java.util.EventListener
public class BasicScheduledTaskService extends WWObjectImpl implements ScheduledTaskService, java.lang.Thread.UncaughtExceptionHandler
A service to execute tasks periodically, or after a delay.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
BasicScheduledTaskService.ScheduledTaskExecutor
Custom executor to run tasks.
-
Field Summary
Fields Modifier and Type Field Description protected java.util.concurrent.ConcurrentLinkedQueue<java.lang.Runnable>
activeTasks
Tasks currently running.protected static int
DEFAULT_POOL_SIZE
Default thread pool size.protected BasicScheduledTaskService.ScheduledTaskExecutor
executor
Executor for running tasks.protected static java.lang.String
IDLE_THREAD_NAME_PREFIX
Name assigned to idle threads.protected static java.lang.String
RUNNING_THREAD_NAME_PREFIX
Name assigned to active threads.
-
Constructor Summary
Constructors Constructor Description BasicScheduledTaskService()
Create a new scheduled task service.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.concurrent.ScheduledFuture<?>
addRepeatingTask(java.lang.Runnable runnable, long initialDelay, long period, java.util.concurrent.TimeUnit timeunit)
Enqueues a task to run periodically.java.util.concurrent.ScheduledFuture<?>
addScheduledTask(java.lang.Runnable runnable, long delay, java.util.concurrent.TimeUnit timeunit)
Enqueues a task to run after a delay.void
addTask(java.lang.Runnable runnable)
Enqueues a task to run.void
shutdown(boolean immediately)
Shut down the service.void
uncaughtException(java.lang.Thread thread, java.lang.Throwable throwable)
-
Methods inherited from class gov.nasa.worldwind.WWObjectImpl
onMessage, propertyChange
-
Methods inherited from class gov.nasa.worldwind.avlist.AVListImpl
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getBooleanValue, getBooleanValue, getChangeSupport, getDoubleValue, getDoubleValue, getEntries, getIntegerValue, getIntegerValue, getLongValue, getLongValue, getRestorableStateForAVPair, getStringValue, getStringValue, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
-
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface gov.nasa.worldwind.avlist.AVList
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
-
-
-
-
Field Detail
-
DEFAULT_POOL_SIZE
protected static final int DEFAULT_POOL_SIZE
Default thread pool size.- See Also:
- Constant Field Values
-
RUNNING_THREAD_NAME_PREFIX
protected static final java.lang.String RUNNING_THREAD_NAME_PREFIX
Name assigned to active threads.
-
IDLE_THREAD_NAME_PREFIX
protected static final java.lang.String IDLE_THREAD_NAME_PREFIX
Name assigned to idle threads.
-
activeTasks
protected java.util.concurrent.ConcurrentLinkedQueue<java.lang.Runnable> activeTasks
Tasks currently running.
-
executor
protected BasicScheduledTaskService.ScheduledTaskExecutor executor
Executor for running tasks.
-
-
Constructor Detail
-
BasicScheduledTaskService
public BasicScheduledTaskService()
Create a new scheduled task service. The thread pool size is from the WorldWind configuration file propertyAVKey.TASK_POOL_SIZE
.
-
-
Method Detail
-
shutdown
public void shutdown(boolean immediately)
Description copied from interface:ScheduledTaskService
Shut down the service. If theimmediate
parameter istrue
, the service will attempt to stop all active tasks, and will not begin work on any other tasks in the queue. Otherwise, the service will complete all tasks in the work queue, but will not accept any new tasks.- Specified by:
shutdown
in interfaceScheduledTaskService
- Parameters:
immediately
-true
to shutdown immediately.
-
uncaughtException
public void uncaughtException(java.lang.Thread thread, java.lang.Throwable throwable)
- Specified by:
uncaughtException
in interfacejava.lang.Thread.UncaughtExceptionHandler
-
addTask
public void addTask(java.lang.Runnable runnable)
Enqueues a task to run. Duplicate tasks are ignored.- Specified by:
addTask
in interfaceScheduledTaskService
- Parameters:
runnable
- the task to add
-
addScheduledTask
public java.util.concurrent.ScheduledFuture<?> addScheduledTask(java.lang.Runnable runnable, long delay, java.util.concurrent.TimeUnit timeunit)
Enqueues a task to run after a delay. Duplicate tasks are ignored.- Specified by:
addScheduledTask
in interfaceScheduledTaskService
- Parameters:
runnable
- the task to add.delay
- delay before execution of the task.timeUnit
determines the units of the value.timeunit
- time unit ofinitialDelay
andperiod
.- Returns:
- a ScheduledFuture that can be used to get the result of the task, or cancel the task, or
null
if the task was not enqueued.
-
addRepeatingTask
public java.util.concurrent.ScheduledFuture<?> addRepeatingTask(java.lang.Runnable runnable, long initialDelay, long period, java.util.concurrent.TimeUnit timeunit)
Enqueues a task to run periodically. This method follows the same semantics asScheduledExecutorService.scheduleAtFixedRate(java.lang.Runnable, long, long, java.util.concurrent.TimeUnit)
. Duplicate tasks are ignored.- Specified by:
addRepeatingTask
in interfaceScheduledTaskService
- Parameters:
runnable
- the task to add.initialDelay
- delay before the first execution of the task.timeUnit
determines the units of the value.period
- interval between executions of the task.timeUnit
determines the units of the value.timeunit
- time unit ofinitialDelay
andperiod
.- Returns:
- a ScheduledFuture that can be used to get the result of the task, or cancel the task, or
null
if the task was not enqueued.
-
-