In Java threads, we know that there is a Thread class and Runnable interface. Both has the method run() which is overriden in the class we implement it.
To invoke the thread, we call thread.start() which internally calls the run() method and executes the statements within the run() method one by one on the thread which is calling it.
I got a doubt, thread.start() internally calls this run() method. What happens if we call the run method directly as it is accessible to us.
I got the answer. Here is the explanation.

I created a thread say t1.
Thread t1 = new Thread("Thread_t1") {
public void run() {
System.out.println("Thread T1");
}};
t1.start();t1.run();
}
}
Here I’m calling t1.start() which internally starts the t1 thread on Thread_t1.
Suppose I call t1.run() method directly without start() then It still runs the thread method without any error. But if we see the thread on which it is running, It is not the thread Thread_t1 and it would be main thread. This is because we called the run() method directly and it is just like any other method.