See the flow of code, very first the lb.run() will be called because it comes first in the code. After that you pass the lb to the Thread constructor and call the start method that thread will run in its own call stack. The invocation of run() is from the main() thread.
Inside the run method you write the following line:
You will get output like: main (This is main thread) Thread 0 (a new thread you created inside the main thread)
Note: Order wont be determined if both the times you did like new Thread(lb).start(), because you didn't know which run() will be granted to execute first.
But in your case, first is simple method call followed by thread creation and making it runnable by calling start() method.