# Class Thread

java.lang.Object
java.lang.Thread

All Implemented Interfaces:
  `Runnable`

Direct Known Subclasses:
  `CodenameOneThread`

public class Thread extends Object implements Runnable
A thread is a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `MAX_PRIORITY`
  The maximum priority that a thread can have.
  `static final int`
  `MIN_PRIORITY`
  The minimum priority that a thread can have.
  `static final int`
  `NORM_PRIORITY`
  The default priority that is assigned to a thread.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Thread()`
  Allocates a new Thread object.
  `Thread(Runnable target)`
  Allocates a new Thread object with a specific target object whose run method is called.
  `Thread(Runnable target, String name)`
  Allocates a new Thread object with the given target and name.
  `Thread(String name)`
  Allocates a new Thread object with the given name.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static int`
  `activeCount()`
  Returns the current number of active threads in the virtual machine.
  `static Thread`
  `currentThread()`
  Returns a reference to the currently executing Thread object.
  `final String`
  `getName()`
  Returns this thread's name.
  `final int`
  `getPriority()`
  Returns this thread's priority.
  `StackTraceElement[]`
  `getStackTrace()`
  `void`
  `interrupt()`
  Interrupts this thread.
  `final boolean`
  `isAlive()`
  Tests if this thread is alive.
  `final void`
  `join()`
  Waits for this thread to die.
  `void`
  `run()`
  If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns.
  `final void`
  `setPriority(int newPriority)`
  Changes the priority of this thread.
  `static void`
  `sleep(long millis)`
  Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds.
  `void`
  `start()`
  Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.
  `String`
  `toString()`
  Returns a string representation of this thread, including the thread's name and priority.
  `static void`
  `yield()`
  Causes the currently executing thread object to temporarily pause and allow other threads to execute.

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `final Class`
  `getClass()`
  Returns the runtime class of an object.
  `int`
  `hashCode()`
  Returns a hash code value for the object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `final void`
  `wait()`
  Causes current thread to wait until another thread invokes the method or the method for this object.
  `final void`
  `wait(long timeout)`
  Causes current thread to wait until either another thread invokes the method or the method for this object, or a specified amount of time has elapsed.
  `final void`
  `wait(long timeout, int nanos)`
  Causes current thread to wait until another thread invokes the method or the method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed.

- ## Field Details

  - ### MAX_PRIORITY

    public static final int MAX_PRIORITY
    The maximum priority that a thread can have. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### MIN_PRIORITY

    public static final int MIN_PRIORITY
    The minimum priority that a thread can have. See Also:Constant Field Values
    See Also:
      - Constant Field Values

  - ### NORM_PRIORITY

    public static final int NORM_PRIORITY
    The default priority that is assigned to a thread. See Also:Constant Field Values
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### Thread

    public Thread()
    Allocates a new Thread object. Threads created this way must have overridden their run() method to actually do anything.

  - ### Thread

    public Thread(Runnable target)
    Allocates a new Thread object with a specific target object whose run method is called. target - the object whose run method is called.

  - ### Thread

    public Thread(Runnable target, String name)
    Allocates a new Thread object with the given target and name. target - the object whose run method is called.name - the name of the new thread.

  - ### Thread

    public Thread(String name)
    Allocates a new Thread object with the given name. Threads created this way must have overridden their run() method to actually do anything. name - the name of the new thread.

- ## Method Details

  - ### activeCount

    public static int activeCount()
    Returns the current number of active threads in the virtual machine.

  - ### currentThread

    public static Thread currentThread()
    Returns a reference to the currently executing Thread object.

  - ### getName

    public final String getName()
    Returns this thread's name. Note that in CLDC the name of the thread can only be set when creating the thread.

  - ### getPriority

    public final int getPriority()
    Returns this thread's priority.

  - ### interrupt

    public void interrupt()
    Interrupts this thread. In an implementation conforming to the CLDC Specification, this operation is not required to cancel or clean up any pending I/O operations that the thread may be waiting for.

  - ### isAlive

    public final boolean isAlive()
    Tests if this thread is alive. A thread is alive if it has been started and has not yet died.

  - ### join

    public final void join() throws InterruptedException
    Waits for this thread to die.
    Throws:
      `InterruptedException`

  - ### run

    public void run()
    If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns. Subclasses of Thread should override this method.
    Specified by:
      `run` in interface `Runnable`

  - ### setPriority

    public final void setPriority(int newPriority)
    Changes the priority of this thread.

  - ### sleep

    public static void sleep(long millis) throws InterruptedException
    Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds. The thread does not lose ownership of any monitors.
    Throws:
      `InterruptedException`

  - ### start

    public void start()
    Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread. The result is that two threads are running concurrently: the current thread (which returns from the call to the start method) and the other thread (which executes its run method).

  - ### toString

    public String toString()
    Returns a string representation of this thread, including the thread's name and priority.
    Overrides:
      `toString` in class `Object`

  - ### yield

    public static void yield()
    Causes the currently executing thread object to temporarily pause and allow other threads to execute.

  - ### getStackTrace

    public StackTraceElement[] getStackTrace()