A thread in Java is a single path of execution inside a program. It lets your program do more than one task at once, like keeping a UI responsive while a file downloads.

What it means

Java programs start with at least one thread, called the main thread, and the JVM creates it when the program begins.

Each thread has its own call stack and program flow, but threads in the same process share memory, which is why they can work together and also cause race conditions if not handled carefully.

Why it matters

Threads are useful for:

  • Running background work without freezing the program.
  • Handling multiple tasks concurrently.
  • Improving responsiveness in GUI or server applications.

A simple example is a desktop app that starts a long task in a separate thread so the button clicks still work while the task runs.

Common ways to create one

In Java, you usually create threads in one of two ways:

  • Extend the Thread class.
  • Implement Runnable and pass it to a Thread object.

The start() method begins a new thread of execution, while run() contains the code that thread executes.

Tiny example

java

class MyTask implements Runnable {
    public void run() {
        System.out.println("Running in a separate thread");
    }
}

public class Main {
    public static void main(String[] args) {
        Thread t = new Thread(new MyTask());
        t.start();
    }
}

In one line

A Java thread is a lightweight execution unit that helps a program do multiple things concurrently.