title: What's the difference between Thread start() and Runnable run()
body: <p>Say we have these two Runnables:</p>
  
  <pre><code>class R1 implements Runnable {
      public void run() { … }
      …
  }
  
  class R2 implements Runnable {
      public void run() { … }
      …
  }
  </code></pre>
  
  <p>Then what's the difference between this:</p>
  
  <pre><code>public static void main() {
      R1 r1 = new R1();
      R2 r2 = new R2();
  
      r1.run();
      r2.run();
  }
  </code></pre>
  
  <p>And this:</p>
  
  <pre><code>public static void main() {
      R1 r1 = new R1();
      R2 r2 = new R2();
      Thread t1 = new Thread(r1);
      Thread t2 = new Thread(r2);
  
      t1.start();
      t2.start();
  }
  </code></pre>