title: run() is never called by Thread.start() method
body: <p>I have written a small multithreading program.</p>
  
  <pre class="lang-java prettyprint-override"><code>public class NewThread implements Runnable {
      Thread t;
  
      public NewThread() {
          t = new Thread(this, "Thread created by Thread Class.");
          System.out.println("Created by constuctor:"+ t);
          t.start(); // This will call run, because t has context as this
      }   
  
      @Override
      public void run() {     
          System.out.println("run() method called.");     
      }
  
      public static void main(String[] args) {
          new NewThread();
      }
  }
  </code></pre>
  
  <p>This is how the book says to write it. However, I never get the <code>run() method called</code> statement in the console. Thus, it seems <code>run()</code> is never called. How can this be true?</p>
  
  <p>Edit: Yes, it is bad practice to start a Thread from constructor, but that is not affecting the question. (I am getting so many down votes for that)</p>