Runnable (Java SE 17 & JDK 17)
Description: declaration: module: java.base, package: java.lang, interface: Runnable
Keywords: java.lang.Runnable interface

Module java.base
Package java.lang

# Interface Runnable

All Known Subinterfaces:
  `RunnableFuture<V>`, `RunnableScheduledFuture<V>`

All Known Implementing Classes:
  `AsyncBoxView.ChildState`, `ForkJoinWorkerThread`, `FutureTask`, `RenderableImageProducer`, `SwingWorker`, `Thread`, `TimerTask`

Functional Interface:
  This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface Runnable
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.

Since:
  1.0
See Also:
  - `Thread`
  - `Callable`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `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.

- ## Method Details

  - ### run

    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:
      - `Thread.run()`