I was learning the concept of Multithreading in Java where I came across this very interesting behavior. I was experimenting with various ways of creating a thread. The one under question now is when we are extending a Thread
, not implementing the Runnable
interface.
On a side note, I am aware that it makes perfect OO sense to implement the Runnable
interface rather than to extend the Thread
class, but for the purposes of this question, let's say we extended the Thread
class.
Let t
be my instance of my extended Thread
class and I have a block of code to be executed in the background that is written within my run()
method of my Thread
class.
It perfectly ran in the background with the t.start()
, but I got a bit curious and called t.run()
method. The piece of code executed in the main thread!
What does t.start()
do that t.run()
doesn't?