What will happen if we directly call the run() method in Java?

A direct call of a Thread object's run() method does not start a separate thread and it can be executed within the current thread. To execute Runnable.run from within a separate thread, do one of the following.

  • Construct a thread using the Runnable object and call start() method on the Thread.

  • Define a subclass of a Thread object and override the definition of its run() method. Then construct an instance of this subclass and call start() method on that instance directly.


public class ThreadRunMethodTest {
   public static void main(String args[]) {
      MyThread runnable = new MyThread();
      runnable.run(); // Call to run() method does not start a separate thread
      System.out.println("Main Thread");
class MyThread extends Thread {
   public void run() {
      try {
      } catch (InterruptedException e) {
         System.out.println("Child Thread interrupted.");
      System.out.println("Child Thread");

In the above example, the main thread, ThreadRunMethodTest, calls the child thread, MyThread, using the run() method. This causes the child thread to run to completion before the rest of the main thread is executed, so that "Child Thread" is printed before "Main Thread".


Child Thread
Main Thread

Updated on: 27-Nov-2023


Kickstart Your Career

Get certified by completing the course

Get Started