org.ros.concurrent
Class DefaultScheduledExecutorService

java.lang.Object
  extended by org.ros.concurrent.DefaultScheduledExecutorService
All Implemented Interfaces:
java.util.concurrent.Executor, java.util.concurrent.ExecutorService, java.util.concurrent.ScheduledExecutorService

public class DefaultScheduledExecutorService
extends java.lang.Object
implements java.util.concurrent.ScheduledExecutorService

This wraps a Executors.newCachedThreadPool() and a Executors.newScheduledThreadPool(int) to provide the functionality of both in a single ScheduledExecutorService. This is necessary since the ScheduledExecutorService uses an unbounded queue which makes it impossible to create an unlimited number of threads on demand (as explained in the ThreadPoolExecutor class javadoc.


Constructor Summary
DefaultScheduledExecutorService()
           
DefaultScheduledExecutorService(java.util.concurrent.ExecutorService executorService)
          This instance will take over the lifecycle of the services.
DefaultScheduledExecutorService(java.util.concurrent.ExecutorService executorService, java.util.concurrent.ScheduledExecutorService scheduledExecutorService)
          This instance will take over the lifecycle of the services.
 
Method Summary
 boolean awaitTermination(long timeout, java.util.concurrent.TimeUnit unit)
          First calls awaitTermination(long, TimeUnit) on the wrapped ExecutorService and then awaitTermination(long, TimeUnit) on the wrapped ScheduledExecutorService.
 void execute(java.lang.Runnable command)
           
<T> java.util.List<java.util.concurrent.Future<T>>
invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
           
<T> java.util.List<java.util.concurrent.Future<T>>
invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit)
           
<T> T
invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
           
<T> T
invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit)
           
 boolean isShutdown()
           
 boolean isTerminated()
           
<V> java.util.concurrent.ScheduledFuture<V>
schedule(java.util.concurrent.Callable<V> callable, long delay, java.util.concurrent.TimeUnit unit)
           
 java.util.concurrent.ScheduledFuture<?> schedule(java.lang.Runnable command, long delay, java.util.concurrent.TimeUnit unit)
           
 java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(java.lang.Runnable command, long initialDelay, long period, java.util.concurrent.TimeUnit unit)
           
 java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(java.lang.Runnable command, long initialDelay, long delay, java.util.concurrent.TimeUnit unit)
           
 void shutdown()
           
 java.util.List<java.lang.Runnable> shutdownNow()
           
<T> java.util.concurrent.Future<T>
submit(java.util.concurrent.Callable<T> task)
           
 java.util.concurrent.Future<?> submit(java.lang.Runnable task)
           
<T> java.util.concurrent.Future<T>
submit(java.lang.Runnable task, T result)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultScheduledExecutorService

public DefaultScheduledExecutorService()

DefaultScheduledExecutorService

public DefaultScheduledExecutorService(java.util.concurrent.ExecutorService executorService)
This instance will take over the lifecycle of the services.

Parameters:
executorService -

DefaultScheduledExecutorService

public DefaultScheduledExecutorService(java.util.concurrent.ExecutorService executorService,
                                       java.util.concurrent.ScheduledExecutorService scheduledExecutorService)
This instance will take over the lifecycle of the services.

Parameters:
executorService -
scheduledExecutorService -
Method Detail

shutdown

public void shutdown()
Specified by:
shutdown in interface java.util.concurrent.ExecutorService

shutdownNow

public java.util.List<java.lang.Runnable> shutdownNow()
Specified by:
shutdownNow in interface java.util.concurrent.ExecutorService

isShutdown

public boolean isShutdown()
Specified by:
isShutdown in interface java.util.concurrent.ExecutorService

isTerminated

public boolean isTerminated()
Specified by:
isTerminated in interface java.util.concurrent.ExecutorService

awaitTermination

public boolean awaitTermination(long timeout,
                                java.util.concurrent.TimeUnit unit)
                         throws java.lang.InterruptedException
First calls awaitTermination(long, TimeUnit) on the wrapped ExecutorService and then awaitTermination(long, TimeUnit) on the wrapped ScheduledExecutorService.

Specified by:
awaitTermination in interface java.util.concurrent.ExecutorService
Returns:
true if both Executors terminated, false otherwise
Throws:
java.lang.InterruptedException

submit

public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T> task)
Specified by:
submit in interface java.util.concurrent.ExecutorService

submit

public <T> java.util.concurrent.Future<T> submit(java.lang.Runnable task,
                                                 T result)
Specified by:
submit in interface java.util.concurrent.ExecutorService

submit

public java.util.concurrent.Future<?> submit(java.lang.Runnable task)
Specified by:
submit in interface java.util.concurrent.ExecutorService

invokeAll

public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
                                                         throws java.lang.InterruptedException
Specified by:
invokeAll in interface java.util.concurrent.ExecutorService
Throws:
java.lang.InterruptedException

invokeAll

public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks,
                                                                    long timeout,
                                                                    java.util.concurrent.TimeUnit unit)
                                                         throws java.lang.InterruptedException
Specified by:
invokeAll in interface java.util.concurrent.ExecutorService
Throws:
java.lang.InterruptedException

invokeAny

public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
            throws java.lang.InterruptedException,
                   java.util.concurrent.ExecutionException
Specified by:
invokeAny in interface java.util.concurrent.ExecutorService
Throws:
java.lang.InterruptedException
java.util.concurrent.ExecutionException

invokeAny

public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks,
                       long timeout,
                       java.util.concurrent.TimeUnit unit)
            throws java.lang.InterruptedException,
                   java.util.concurrent.ExecutionException,
                   java.util.concurrent.TimeoutException
Specified by:
invokeAny in interface java.util.concurrent.ExecutorService
Throws:
java.lang.InterruptedException
java.util.concurrent.ExecutionException
java.util.concurrent.TimeoutException

execute

public void execute(java.lang.Runnable command)
Specified by:
execute in interface java.util.concurrent.Executor

schedule

public java.util.concurrent.ScheduledFuture<?> schedule(java.lang.Runnable command,
                                                        long delay,
                                                        java.util.concurrent.TimeUnit unit)
Specified by:
schedule in interface java.util.concurrent.ScheduledExecutorService

schedule

public <V> java.util.concurrent.ScheduledFuture<V> schedule(java.util.concurrent.Callable<V> callable,
                                                            long delay,
                                                            java.util.concurrent.TimeUnit unit)
Specified by:
schedule in interface java.util.concurrent.ScheduledExecutorService

scheduleAtFixedRate

public java.util.concurrent.ScheduledFuture<?> scheduleAtFixedRate(java.lang.Runnable command,
                                                                   long initialDelay,
                                                                   long period,
                                                                   java.util.concurrent.TimeUnit unit)
Specified by:
scheduleAtFixedRate in interface java.util.concurrent.ScheduledExecutorService

scheduleWithFixedDelay

public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(java.lang.Runnable command,
                                                                      long initialDelay,
                                                                      long delay,
                                                                      java.util.concurrent.TimeUnit unit)
Specified by:
scheduleWithFixedDelay in interface java.util.concurrent.ScheduledExecutorService