# 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
abstract class RunnableFutureTask<R : Any?, E : Exception?> : 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 : https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?>` | The type of the result. |
| `<E : 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/kotlin/androidx/media3/common/util/RunnableFutureTask#RunnableFutureTask()()` |

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

| ### Protected functions |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/common/util/RunnableFutureTask#cancelWork()()` Cancels any work being done by `https://developer.android.com/reference/kotlin/androidx/media3/common/util/RunnableFutureTask#doWork()`. |
| `abstract R!` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnknownNull https://developer.android.com/reference/kotlin/androidx/media3/common/util/RunnableFutureTask#doWork()()` Performs the work or computation. |

### Inherited functions

From [java.util.concurrent.Future](https://developer.android.com/reference/java/util/concurrent/Future.html) `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-throwable/index.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 functions

### blockUntilFinished

```
fun blockUntilFinished(): Unit
```

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

### blockUntilStarted

```
fun blockUntilStarted(): Unit
```

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

### cancel

```
fun cancel(interruptIfRunning: Boolean): Boolean
```

### get

```
@UnknownNull
fun get(): R!
```

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

### get

```
@UnknownNull
fun get(timeout: Long, unit: TimeUnit!): R!
```

| 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

```
fun isCancelled(): Boolean
```

### isDone

```
fun isDone(): Boolean
```

### run

```
fun run(): Unit
```

## Protected functions

### cancelWork

```
protected fun cancelWork(): Unit
```

Cancels any work being done by `https://developer.android.com/reference/kotlin/androidx/media3/common/util/RunnableFutureTask#doWork()`. If `https://developer.android.com/reference/kotlin/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 fun doWork(): R!
```

Performs the work or computation.

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

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