I think when main thread invoked the constructor when the object of the class was created. Because during that time the new Thread is just created. It is still not alive. It will be alive only after calling start() method. And I have read in one of the
Java documents that invoking start() method from the constructor is not a good idea. Doing so could expose partially constructed objects to the new thread. So, may be because of this reason when main thread invoked constructor a new thread might have invoked start() from constructor and executed run() function. I am sorry I don't know much in detail that how it happens.
But you can check this by using System.out.println(Thread.currentThread().getName()) in the constructor and in the run() method.
You will get a new Thread which have executed at the time when you call start() from constructor. And 2nd time is invoked by the thread that we created in the code.
Hope that helps.
Thanks,
Saumya