# Runnable

public interface **Runnable**

|---|---|---|
| Known Indirect Subclasses [ForkJoinWorkerThread](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinWorkerThread.html), [FutureTask](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/FutureTask.html)\<V\>, [RunnableFuture](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/RunnableFuture.html)\<V\>, [RunnableScheduledFuture](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/RunnableScheduledFuture.html)\<V\>, [TimerTask](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/TimerTask.html) |---|---| | [ForkJoinWorkerThread](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinWorkerThread.html) | A thread managed by a `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinPool.html`, which executes `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ForkJoinTask.html`s. | | [FutureTask](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/FutureTask.html)\<V\> | A cancellable asynchronous computation. | | [RunnableFuture](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/RunnableFuture.html)\<V\> | A `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/Future.html` that is `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Runnable.html`. | | [RunnableScheduledFuture](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/RunnableScheduledFuture.html)\<V\> | A `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/ScheduledFuture.html` that is `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Runnable.html`. | | [TimerTask](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/TimerTask.html) | A task that can be scheduled for one-time or repeated execution by a 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://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Thread.html`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/concurrent/Callable.html`

### Public Method Summary

|---|---|
| abstract void | [run](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Runnable.html#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

#### 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.

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Thread.html#run()`