title: java thread reusage via executor
body: <p>I am confused on the following:<br>
  To use threads in a Java program, the simplest way is to extend Thread class and implement the runnable interface (or simply implement runnable).<br>
  To start the thread's execution. we must call the Thread's method start(), which in turn calls method run() of the thread. And so the thread starts.<br>
  The method start() (unless I am wrong) <strong>must be called exactly and only once</strong> for each thread. As a result, thread instances can not be reused unless somehow the run method itself runs in some-short of infinite loop that facilitates a custom implementation of the thread's reusage.<br>
  Now the javadoc 
  <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Executors.html#newCachedThreadPool%28%29" rel="noreferrer" title="Executors">link text</a>
   says  </p>
  
  <blockquote>
    <p>Calls to execute will reuse previously constructed threads if available  </p>
  </blockquote>
  
  <p>I do not understand how this is implemented. 
  I provide in the execute method of the executor method my custom thread e.g.</p>
  
  <pre><code>  ExecutorService myCachedPool = Executors.newCachedThreadPool();
    myCachedPool.execute(new Runnable(){public void run(){  
       //do something time consuming
  
    }});
  </code></pre>
  
  <p>How can this custom thread I delegeate to the executor framework be reused?<br>
  Is Executor is allowed to call method start() more than 1 time, while we can not in our programs?
  Am I misunderstanding something?</p>
  
  <p>Thank you.</p>