title: Callable Threads versus Runnable Threads versus Extend Thread
body: <p>I was recently reading about creation of Threads in java by <code>implementing Runnable</code> or <code>Extending thread</code> and last <code>Implementing Callable</code>. <a href="https://stackoverflow.com/questions/141284/the-difference-between-the-runnable-and-callable-interfaces-in-java">Runnable Versus Callable</a> thread at stackoverflow describes the difference quoting <code>both are designed for classes whose instances are potentially executed by another thread</code>. What does it mean? Does it creates new Thread? If yes, why we need to pass a class that implements <code>Runnable</code> to <code>Thread</code> constructor?</p>
  <p>Also, i saw the method of creating threads  by <code>implementing Runnable</code> or <code>Extending thread</code>. In the first method, (in the tutorials what i found), we need to call <code>Thread</code> class which requires the <code>Runnable</code> instance to start the thread. But, i could not found the similar thing for <code>Callable</code> as there is no Thread constructor which accepts <code>Callable</code>. <code>Executor framework</code> or <code>Future Task</code> is used for the purpose of running those threads. Then why we say both ways are same (except Callable retruns something and can throw Exception).</p>
  <p>Last, is writing</p>
  <pre><code>Thread t = new Thread();
  Thread t1 = new Thread(new RunnableInstance());
  </code></pre>
  <p>Do these create new Threads in system? Is there any other way of using <code>Runnable</code> to create new threads without passing it as a constructor to <code>Thread</code> class?</p>
  <p>It should not be a duplicate question.</p>