# RunnableFutureTask

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

*** ** * ** ***


```
@UnstableApi
public abstract class RunnableFutureTask<R extends Object, E extends Exception> implements RunnableFuture<R>
```

<br />

*** ** * ** ***

A `https://developer.android.com/reference/java/util/concurrent/RunnableFuture.html` that supports additional uninterruptible operations to query whether execution has started and finished.

| Parameters |
|---|---|
| `<R extends https://developer.android.com/reference/java/lang/Object.html>` | The type of the result. |
| `<E extends https://developer.android.com/reference/java/lang/Exception.html>` | The type of any `https://developer.android.com/reference/java/util/concurrent/ExecutionException.html` cause. |

## Summary

| ### Protected constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#RunnableFutureTask()()` |

| ### Public methods |
|---|---|
| `final void` | `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#blockUntilFinished()()` Blocks until the task has finished, or has been canceled without having been started. |
| `final void` | `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#blockUntilStarted()()` Blocks until the task has started, or has been canceled without having been started. |
| `final boolean` | `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#cancel(boolean)(boolean interruptIfRunning)` |
| `final R` | `@https://developer.android.com/reference/androidx/media3/common/util/UnknownNull https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#get()()` |
| `final R` | `@https://developer.android.com/reference/androidx/media3/common/util/UnknownNull https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#get(long,java.util.concurrent.TimeUnit)(long timeout, https://developer.android.com/reference/java/util/concurrent/TimeUnit.html unit)` |
| `final boolean` | `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#isCancelled()()` |
| `final boolean` | `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#isDone()()` |
| `final void` | `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#run()()` |

| ### Protected methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#cancelWork()()` Cancels any work being done by `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#doWork()`. |
| `abstract R` | `@https://developer.android.com/reference/androidx/media3/common/util/UnknownNull https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#doWork()()` Performs the work or computation. |

### Inherited methods

From [java.util.concurrent.Future](https://developer.android.com/reference/java/util/concurrent/Future.html) `https://developer.android.com/reference/java/lang/Throwable.html` `https://developer.android.com/reference/java/util/concurrent/Future.html#exceptionNow()()` `V` `https://developer.android.com/reference/java/util/concurrent/Future.html#resultNow()()` `https://developer.android.com/reference/java/util/concurrent/Future.State.html` `https://developer.android.com/reference/java/util/concurrent/Future.html#state()()`

## Protected constructors

### RunnableFutureTask

```
protected RunnableFutureTask()
```

## Public methods

### blockUntilFinished

```
public final void blockUntilFinished()
```

Blocks until the task has finished, or has been canceled without having been started.

### blockUntilStarted

```
public final void blockUntilStarted()
```

Blocks until the task has started, or has been canceled without having been started.

### cancel

```
public final boolean cancel(boolean interruptIfRunning)
```

### get

```
@UnknownNull
public final R get()
```

| Throws |
|---|---|
| `https://developer.android.com/reference/java/util/concurrent/ExecutionException.html` |   |
| `https://developer.android.com/reference/java/lang/InterruptedException.html` |   |

### get

```
@UnknownNull
public final R get(long timeout, TimeUnit unit)
```

| Throws |
|---|---|
| `https://developer.android.com/reference/java/util/concurrent/ExecutionException.html` |   |
| `https://developer.android.com/reference/java/lang/InterruptedException.html` |   |
| `https://developer.android.com/reference/java/util/concurrent/TimeoutException.html` |   |

### isCancelled

```
public final boolean isCancelled()
```

### isDone

```
public final boolean isDone()
```

### run

```
public final void run()
```

## Protected methods

### cancelWork

```
protected void cancelWork()
```

Cancels any work being done by `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#doWork()`. If `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask#doWork()` is currently executing then the thread on which it's executing may be interrupted immediately after this method returns.

The default implementation does nothing.

### doWork

```
@UnknownNull
protected abstract R doWork()
```

Performs the work or computation.

| Returns |
|---|---|
| `R` | The computed result. |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/util/RunnableFutureTask` | If an error occurred. |