Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Methods](https://developer.android.com/reference/java/util/concurrent/RejectedExecutionHandler#pubmethods)

# RejectedExecutionHandler

` public interface RejectedExecutionHandler `   
` `

|---|
| java.util.concurrent.RejectedExecutionHandler |

Known indirect subclasses [ThreadPoolExecutor.AbortPolicy](https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.AbortPolicy), [ThreadPoolExecutor.CallerRunsPolicy](https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.CallerRunsPolicy), [ThreadPoolExecutor.DiscardOldestPolicy](https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardOldestPolicy), [ThreadPoolExecutor.DiscardPolicy](https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardPolicy) [ThreadPoolExecutor.AbortPolicy](https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.AbortPolicy) A handler for rejected tasks that throws a `https://developer.android.com/reference/java/util/concurrent/RejectedExecutionException`. [ThreadPoolExecutor.CallerRunsPolicy](https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.CallerRunsPolicy) A handler for rejected tasks that runs the rejected task directly in the calling thread of the `execute` method, unless the executor has been shut down, in which case the task is discarded. [ThreadPoolExecutor.DiscardOldestPolicy](https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardOldestPolicy) A handler for rejected tasks that discards the oldest unhandled request and then retries `execute`, unless the executor is shut down, in which case the task is discarded. [ThreadPoolExecutor.DiscardPolicy](https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.DiscardPolicy) A handler for rejected tasks that silently discards the rejected task.   

*** ** * ** ***

A handler for tasks that cannot be executed by a `https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor`.

## Summary

| ### Public methods ||
|---|---|
| ` abstract void` | ` https://developer.android.com/reference/java/util/concurrent/RejectedExecutionHandler#rejectedExecution(java.lang.Runnable,%20java.util.concurrent.ThreadPoolExecutor)(https://developer.android.com/reference/java/lang/Runnable r, https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor executor) ` Method that may be invoked by a `https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor` when `https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor#execute(java.lang.Runnable)` cannot accept a task. |

## Public methods

### rejectedExecution

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void rejectedExecution (Runnable r, 
                ThreadPoolExecutor executor)
```

Method that may be invoked by a `https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor` when `https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor#execute(java.lang.Runnable)` cannot accept a task. This may occur when no more threads or queue slots are available because their bounds would be exceeded, or upon shutdown of the Executor.

In the absence of other alternatives, the method may throw an unchecked `https://developer.android.com/reference/java/util/concurrent/RejectedExecutionException`, which will be propagated to the caller of `execute`.

<br />

| Parameters ||
|---|---|
| `r` | `Runnable`: the runnable task requested to be executed <br /> |
| `executor` | `ThreadPoolExecutor`: the executor attempting to execute this task <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/util/concurrent/RejectedExecutionException` | if there is no remedy |