While going through the source code of java.lang.Thread class. Curiously I wanted to see how a run() method (user defined run()) is called by Threa
how does a run() method of mine is called in case when I extend Thread class
Because you extended the class. You overrode the run() method to do something different. The @Override annotation is used to highlight that this method overrides a parent method.
The target doesn't get magically changed, you ignored in your code.