title: How can child threads still execute even after that their parent thread die or terminate?
body: <p>Here are my two classes:</p>
  
  <pre><code>public class Firstclass {
      public static void main(String args[]) throws InterruptedException {
          System.out.println("Main start....");
          Secondclass t1 = new Secondclass();
          t1.setName("First Thread");
          Secondclass t2 = new Secondclass();
          t2.setName("Second Thread");
          t1.start();
          t2.start();
          System.out.println("Main close...");
      }
  }
  </code></pre>
  
  <p>and</p>
  
  <pre><code>public class Secondclass extends Thread {
      @Override
      public void run() {
          try {
              loop();
          } catch(Exception e) {
              System.out.println("exception is" + e);
          }
      }
  
      public void loop() throws InterruptedException {
          for(int i = 0; i &lt;= 10; i++) {
              Thread t = Thread.currentThread();
              String threadname = t.getName();
              if(threadname.equals("First Thread")) {
                  Thread.sleep(1000);
              } else {
                  Thread.sleep(1500);
              }
              System.out.println("i==" + i);   
          }   
      }    
  }
  </code></pre>
  
  <p>Now when I run <code>Firstclass</code> then the output is:</p>
  
  <pre><code>Main start....
  Main close...
  i==0
  i==0
  i==1
  i==1
  i==2
  i==3
  i==2
  i==4
  i==3
  i==5
  i==6
  i==4
  i==7
  i==5
  i==8
  i==9
  i==6
  i==10
  i==7
  i==8
  i==9
  i==10
  </code></pre>
  
  <p><strong>My  question is:</strong>  Let's consider main method is executed by a thread 'T' in JVM and t1 and t2 are obviously child threads of parent thread T so when T thread that is the main method dies how can T1 and T2 still execute and give us output. Because if parent thread dies or terminates then child thread should also die or terminate.</p>