# ReleasableExecutor

Artifact: [androidx.media3:media3-exoplayer](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/exoplayer/util/ReleasableExecutor.java+class:androidx.media3.exoplayer.util.ReleasableExecutor)

*** ** * ** ***


```
@UnstableApi
public interface ReleasableExecutor extends Executor
```

<br />

*** ** * ** ***

An `https://developer.android.com/reference/java/util/concurrent/Executor.html` with a dedicated `https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor#release()` method to signal when it is not longer needed.

## Summary

| ### Public methods |
|---|---|
| `default static https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor` | `<T extends https://developer.android.com/reference/java/util/concurrent/Executor.html> https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor#from(T,java.util.function.Consumer<T>)(T executor, https://developer.android.com/reference/java/util/function/Consumer.html<T> releaseCallback)` Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor` from an `https://developer.android.com/reference/java/util/concurrent/Executor.html` and a release callback. |
| `abstract void` | `https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor#release()()` Releases the `https://developer.android.com/reference/java/util/concurrent/Executor.html`, indicating that the caller no longer requires it for executing new commands. |

### Inherited methods

From [java.util.concurrent.Executor](https://developer.android.com/reference/java/util/concurrent/Executor.html) `abstract void` `https://developer.android.com/reference/java/util/concurrent/Executor.html#execute(java.lang.Runnable)(https://developer.android.com/reference/java/lang/Runnable.html p)`

## Public methods

### from

```
default static ReleasableExecutor <T extends Executor> from(T executor, Consumer<T> releaseCallback)
```

Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor` from an `https://developer.android.com/reference/java/util/concurrent/Executor.html` and a release callback.

| Parameters |
|---|---|
| `<T extends https://developer.android.com/reference/java/util/concurrent/Executor.html>` | The type of `https://developer.android.com/reference/java/util/concurrent/Executor.html`. |
| `T executor` | The `https://developer.android.com/reference/java/util/concurrent/Executor.html` |
| `https://developer.android.com/reference/java/util/function/Consumer.html<T> releaseCallback` | The release callback, accepting the `executor` as an argument. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor` | The releasable executor. |

### release

```
abstract void release()
```

Releases the `https://developer.android.com/reference/java/util/concurrent/Executor.html`, indicating that the caller no longer requires it for executing new commands.

When calling this method, there may still be pending commands that are currently executed.