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

# Runnable

` public interface Runnable `   
` `

|---|
| java.lang.Runnable |

Known indirect subclasses [AnimationDrawable](https://developer.android.com/reference/android/graphics/drawable/AnimationDrawable), [CookieSyncManager](https://developer.android.com/reference/android/webkit/CookieSyncManager), [ForkJoinWorkerThread](https://developer.android.com/reference/java/util/concurrent/ForkJoinWorkerThread), [FutureTask](https://developer.android.com/reference/java/util/concurrent/FutureTask)\<V\>, [HandlerThread](https://developer.android.com/reference/android/os/HandlerThread), [RenderScript.RSErrorHandler](https://developer.android.com/reference/android/renderscript/RenderScript.RSErrorHandler), [RenderScript.RSMessageHandler](https://developer.android.com/reference/android/renderscript/RenderScript.RSMessageHandler), [RunnableFuture](https://developer.android.com/reference/java/util/concurrent/RunnableFuture)\<V\>, [RunnableScheduledFuture](https://developer.android.com/reference/java/util/concurrent/RunnableScheduledFuture)\<V\>, [Thread](https://developer.android.com/reference/java/lang/Thread), [TimerTask](https://developer.android.com/reference/java/util/TimerTask) [AnimationDrawable](https://developer.android.com/reference/android/graphics/drawable/AnimationDrawable) An object used to create frame-by-frame animations, defined by a series of Drawable objects, which can be used as a View object's background. [CookieSyncManager](https://developer.android.com/reference/android/webkit/CookieSyncManager) *This class was deprecated in API level 21. The WebView now automatically syncs cookies as necessary. You no longer need to create or use the CookieSyncManager. To manually force a sync you can use the CookieManager method `https://developer.android.com/reference/android/webkit/CookieManager#flush()` which is a synchronous replacement for `https://developer.android.com/reference/android/webkit/CookieSyncManager#sync()`.* [ForkJoinWorkerThread](https://developer.android.com/reference/java/util/concurrent/ForkJoinWorkerThread) A thread managed by a `https://developer.android.com/reference/java/util/concurrent/ForkJoinPool`, which executes `https://developer.android.com/reference/java/util/concurrent/ForkJoinTask`s. [FutureTask](https://developer.android.com/reference/java/util/concurrent/FutureTask)\<V\> A cancellable asynchronous computation. [HandlerThread](https://developer.android.com/reference/android/os/HandlerThread) A `https://developer.android.com/reference/java/lang/Thread` that has a `https://developer.android.com/reference/android/os/Looper`. [RenderScript.RSErrorHandler](https://developer.android.com/reference/android/renderscript/RenderScript.RSErrorHandler) The runtime error handler base class. [RenderScript.RSMessageHandler](https://developer.android.com/reference/android/renderscript/RenderScript.RSMessageHandler) The base class from which an application should derive in order to receive RS messages from scripts. [RunnableFuture](https://developer.android.com/reference/java/util/concurrent/RunnableFuture)\<V\> A `https://developer.android.com/reference/java/util/concurrent/Future` that is `https://developer.android.com/reference/java/lang/Runnable`. [RunnableScheduledFuture](https://developer.android.com/reference/java/util/concurrent/RunnableScheduledFuture)\<V\> A `https://developer.android.com/reference/java/util/concurrent/ScheduledFuture` that is `https://developer.android.com/reference/java/lang/Runnable`. [Thread](https://developer.android.com/reference/java/lang/Thread) A *thread* is a thread of execution in a program. [TimerTask](https://developer.android.com/reference/java/util/TimerTask) A task that can be scheduled for one-time or repeated execution by a `https://developer.android.com/reference/java/util/Timer`.   

*** ** * ** ***

The `Runnable` interface should be implemented by any class whose instances are intended to be executed by a thread. The class must define a method of no arguments called `run`.

This interface is designed to provide a common protocol for objects that wish to execute code while they are active. For example, `Runnable` is implemented by class `Thread`. Being active simply means that a thread has been started and has not yet been stopped.

In addition, `Runnable` provides the means for a class to be active while not subclassing `Thread`. A class that implements `Runnable` can run without subclassing `Thread` by instantiating a `Thread` instance and passing itself in as the target. In most cases, the `Runnable` interface should be used if you are only planning to override the `run()` method and no other `Thread` methods. This is important because classes should not be subclassed unless the programmer intends on modifying or enhancing the fundamental behavior of the class.
**See also:**

- `https://developer.android.com/reference/java/lang/Thread`
- `https://developer.android.com/reference/java/util/concurrent/Callable`

## Summary

| ### Public methods ||
|---|---|
| ` abstract void` | ` https://developer.android.com/reference/java/lang/Runnable#run()() ` When an object implementing interface `Runnable` is used to create a thread, starting the thread causes the object's `run` method to be called in that separately executing thread. |

## Public methods

### run

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

```
public abstract void run ()
```

When an object implementing interface `Runnable` is used to create a thread, starting the thread causes the object's `run` method to be called in that separately executing thread.

The general contract of the method `run` is that it may take any action whatsoever.

<br />

**See also:**

- `https://developer.android.com/reference/java/lang/Thread#run()`