title: Why is it important to extends Thread Class In Java to create parameterised constructor
body: <p>I am trying to understand what happen behind the scenes in Java Thread class - Here is the scenario</p>
  <p><strong>Scneario 1</strong></p>
  <p>I have main class like this</p>
  <pre><code>public class LoadBalancerUpStreamManagement extends Thread{
  
      public static void main(String args[]){
  
          LoadBalancerUpStreamManagement loadBalancerUpStreamManagement  = new LoadBalancerUpStreamManagement();
          loadBalancerUpStreamManagement.start();
          
      }
  }
  
  </code></pre>
  <p>In the above scenario, as we have extended <code>Thread</code> class hence, its <code>start method</code> has also inherited. When we call the <code>start method</code> on object <code>loadBalancerUpStreamManagement</code>, it start and JVM internally called the <code>run</code> method on the new thread. Make sense so far.</p>
  <p><strong>Now consider another scenario</strong></p>
  <pre><code>public class LoadBalancerUpStreamManagement extends Thread{
  
      public static void main(String args[]){
          
          LoadBalancer elb = new LoadBalancer();
  
          new Thread(elb);  ---&gt; 2. It gives me constructor error - Can not resolve constructor Thread(LoadBalancer) 
      }
  }
  
  class LoadBalancer { ------&gt; 1. I have not extended the Thread class here 
  
  
  }
  
  
  </code></pre>
  <p>I am not able to understand, why is it important to <code>extends Thread Class</code> - Which OOPS concept is breaking and what is going on behind the scene?</p>
  <p>If I extends <code>Thread</code> class then it all good.</p>
  <pre><code>public class LoadBalancerUpStreamManagement extends Thread{
  
      public static void main(String args[]){
  
          LoadBalancer elb = new LoadBalancer();
          new Thread(elb);  ------&gt; 2. It is all good here. 
      }
  }
  
  class LoadBalancer extends Thread{ ---&gt; 1. Extended Thread Class 
  
  
  }
  
  
  </code></pre>