org.apache.camel.util.concurrent
Class RejectableScheduledThreadPoolExecutor

java.lang.Object
  extended by java.util.concurrent.AbstractExecutorService
      extended by java.util.concurrent.ThreadPoolExecutor
          extended by java.util.concurrent.ScheduledThreadPoolExecutor
              extended by org.apache.camel.util.concurrent.RejectableScheduledThreadPoolExecutor
All Implemented Interfaces:
Executor, ExecutorService, ScheduledExecutorService

public class RejectableScheduledThreadPoolExecutor
extends ScheduledThreadPoolExecutor

Scheduled thread pool executor that creates RejectableFutureTask instead of FutureTask when registering new tasks for execution.

Instances of RejectableFutureTask are required to handle ThreadPoolRejectedPolicy.Discard and ThreadPoolRejectedPolicy.DiscardOldest policies correctly, e.g. notify Callable and Runnable tasks when they are rejected. To be notified of rejection tasks have to implement Rejectable interface:

 public class RejectableTask implements Runnable, Rejectable {
     @Override
     public void run() {
         // execute task
     }
     @Override
     public void reject() {
         // do something useful on rejection
     }
 }
 

If the task does not implement Rejectable interface the behavior is exactly the same as with ordinary ScheduledThreadPoolExecutor.

See Also:
RejectableFutureTask, Rejectable, RejectableThreadPoolExecutor

Nested Class Summary
 
Nested classes/interfaces inherited from class java.util.concurrent.ThreadPoolExecutor
ThreadPoolExecutor.AbortPolicy, ThreadPoolExecutor.CallerRunsPolicy, ThreadPoolExecutor.DiscardOldestPolicy, ThreadPoolExecutor.DiscardPolicy
 
Constructor Summary
RejectableScheduledThreadPoolExecutor(int corePoolSize)
           
RejectableScheduledThreadPoolExecutor(int corePoolSize, RejectedExecutionHandler handler)
           
RejectableScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory)
           
RejectableScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory, RejectedExecutionHandler handler)
           
 
Method Summary
protected
<T> RunnableFuture<T>
newTaskFor(Callable<T> callable)
           
protected
<T> RunnableFuture<T>
newTaskFor(Runnable runnable, T value)
           
 
Methods inherited from class java.util.concurrent.ScheduledThreadPoolExecutor
decorateTask, decorateTask, execute, getContinueExistingPeriodicTasksAfterShutdownPolicy, getExecuteExistingDelayedTasksAfterShutdownPolicy, getQueue, remove, schedule, schedule, scheduleAtFixedRate, scheduleWithFixedDelay, setContinueExistingPeriodicTasksAfterShutdownPolicy, setExecuteExistingDelayedTasksAfterShutdownPolicy, shutdown, shutdownNow, submit, submit, submit
 
Methods inherited from class java.util.concurrent.ThreadPoolExecutor
afterExecute, allowCoreThreadTimeOut, allowsCoreThreadTimeOut, awaitTermination, beforeExecute, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isShutdown, isTerminated, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setRejectedExecutionHandler, setThreadFactory, terminated
 
Methods inherited from class java.util.concurrent.AbstractExecutorService
invokeAll, invokeAll, invokeAny, invokeAny
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.concurrent.ExecutorService
awaitTermination, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated
 

Constructor Detail

RejectableScheduledThreadPoolExecutor

public RejectableScheduledThreadPoolExecutor(int corePoolSize)

RejectableScheduledThreadPoolExecutor

public RejectableScheduledThreadPoolExecutor(int corePoolSize,
                                             ThreadFactory threadFactory)

RejectableScheduledThreadPoolExecutor

public RejectableScheduledThreadPoolExecutor(int corePoolSize,
                                             RejectedExecutionHandler handler)

RejectableScheduledThreadPoolExecutor

public RejectableScheduledThreadPoolExecutor(int corePoolSize,
                                             ThreadFactory threadFactory,
                                             RejectedExecutionHandler handler)
Method Detail

newTaskFor

protected <T> RunnableFuture<T> newTaskFor(Runnable runnable,
                                           T value)
Overrides:
newTaskFor in class AbstractExecutorService

newTaskFor

protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable)
Overrides:
newTaskFor in class AbstractExecutorService


Apache CAMEL