org.apache.aries.blueprint.utils.threading
Class ScheduledExecutorServiceWrapper
java.lang.Object
org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper
- All Implemented Interfaces:
- Executor, ExecutorService, ScheduledExecutorService, org.apache.aries.util.tracker.SingleServiceTracker.SingleServiceListener
public class ScheduledExecutorServiceWrapper
- extends Object
- implements ScheduledExecutorService, org.apache.aries.util.tracker.SingleServiceTracker.SingleServiceListener
This class looks like a ScheduledExecutorService to the outside world. Internally it uses either
a scheduled thread pool with a core size of 3, or it picks one up from the service registry. If
it picks one up from the service registry then it shuts the internal one down. This doesn't fully meet
the spec for a SchedueledExecutorService. It does not properly implement shutdownNow, but this isn't used
by blueprint so for now that should be fine.
It also wraps the Runnables and Callables so when a task is canceled we quickly clean up memory rather
than waiting for the target to get to the task and purge it.
Method Summary |
boolean |
awaitTermination(long timeout,
TimeUnit unit)
|
void |
execute(Runnable command)
|
|
invokeAll(Collection<? extends Callable<T>> tasks)
|
|
invokeAll(Collection<? extends Callable<T>> tasks,
long timeout,
TimeUnit unit)
|
|
invokeAny(Collection<? extends Callable<T>> tasks)
|
|
invokeAny(Collection<? extends Callable<T>> tasks,
long timeout,
TimeUnit unit)
|
boolean |
isShutdown()
|
boolean |
isTerminated()
|
|
schedule(Callable<V> callable,
long delay,
TimeUnit unit)
|
ScheduledFuture<?> |
schedule(Runnable command,
long delay,
TimeUnit unit)
|
ScheduledFuture<?> |
scheduleAtFixedRate(Runnable command,
long initialDelay,
long period,
TimeUnit unit)
|
ScheduledFuture<?> |
scheduleWithFixedDelay(Runnable command,
long initialDelay,
long delay,
TimeUnit unit)
|
void |
serviceFound()
|
void |
serviceLost()
|
void |
serviceReplaced()
|
void |
shutdown()
|
List<Runnable> |
shutdownNow()
|
|
submit(Callable<T> task)
|
Future<?> |
submit(Runnable task)
|
|
submit(Runnable task,
T result)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ScheduledExecutorServiceWrapper
public ScheduledExecutorServiceWrapper(org.osgi.framework.BundleContext context,
String name,
ScheduledExecutorServiceWrapper.ScheduledExecutorServiceFactory sesf)
awaitTermination
public boolean awaitTermination(long timeout,
TimeUnit unit)
throws InterruptedException
- Specified by:
awaitTermination
in interface ExecutorService
- Throws:
InterruptedException
invokeAll
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
throws InterruptedException
- Specified by:
invokeAll
in interface ExecutorService
- Throws:
InterruptedException
invokeAll
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
long timeout,
TimeUnit unit)
throws InterruptedException
- Specified by:
invokeAll
in interface ExecutorService
- Throws:
InterruptedException
invokeAny
public <T> T invokeAny(Collection<? extends Callable<T>> tasks)
throws InterruptedException,
ExecutionException
- Specified by:
invokeAny
in interface ExecutorService
- Throws:
InterruptedException
ExecutionException
invokeAny
public <T> T invokeAny(Collection<? extends Callable<T>> tasks,
long timeout,
TimeUnit unit)
throws InterruptedException,
ExecutionException,
TimeoutException
- Specified by:
invokeAny
in interface ExecutorService
- Throws:
InterruptedException
ExecutionException
TimeoutException
isShutdown
public boolean isShutdown()
- Specified by:
isShutdown
in interface ExecutorService
isTerminated
public boolean isTerminated()
- Specified by:
isTerminated
in interface ExecutorService
shutdown
public void shutdown()
- Specified by:
shutdown
in interface ExecutorService
shutdownNow
public List<Runnable> shutdownNow()
- Specified by:
shutdownNow
in interface ExecutorService
submit
public <T> Future<T> submit(Callable<T> task)
- Specified by:
submit
in interface ExecutorService
submit
public Future<?> submit(Runnable task)
- Specified by:
submit
in interface ExecutorService
submit
public <T> Future<T> submit(Runnable task,
T result)
- Specified by:
submit
in interface ExecutorService
execute
public void execute(Runnable command)
- Specified by:
execute
in interface Executor
schedule
public ScheduledFuture<?> schedule(Runnable command,
long delay,
TimeUnit unit)
- Specified by:
schedule
in interface ScheduledExecutorService
schedule
public <V> ScheduledFuture<V> schedule(Callable<V> callable,
long delay,
TimeUnit unit)
- Specified by:
schedule
in interface ScheduledExecutorService
scheduleAtFixedRate
public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
long initialDelay,
long period,
TimeUnit unit)
- Specified by:
scheduleAtFixedRate
in interface ScheduledExecutorService
scheduleWithFixedDelay
public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command,
long initialDelay,
long delay,
TimeUnit unit)
- Specified by:
scheduleWithFixedDelay
in interface ScheduledExecutorService
serviceFound
public void serviceFound()
- Specified by:
serviceFound
in interface org.apache.aries.util.tracker.SingleServiceTracker.SingleServiceListener
serviceLost
public void serviceLost()
- Specified by:
serviceLost
in interface org.apache.aries.util.tracker.SingleServiceTracker.SingleServiceListener
serviceReplaced
public void serviceReplaced()
- Specified by:
serviceReplaced
in interface org.apache.aries.util.tracker.SingleServiceTracker.SingleServiceListener
Copyright © 2009-2011 The Apache Software Foundation. All Rights Reserved.