повторное использование потока Java через исполнителя

Меня смущает следующее:
Чтобы использовать потоки в программе Java, самый простой способ - расширить класс Thread и реализовать исполняемый интерфейс (или просто реализовать исполняемый).
Чтобы запустить выполнение потока. мы должны вызвать метод start () потока, который, в свою очередь, вызывает метод run () потока. И так начинается цепочка.
Метод start () (если я не ошибаюсь) должен вызываться точно и только один раз для каждого потока. В результате экземпляры потока не могут быть повторно использованы, если каким-то образом сам метод run не запускается в некотором количестве, не превышающем бесконечного цикла, который облегчает индивидуальную реализацию повторного использования потока.
Теперь javadoc текст ссылки говорит

При вызове на выполнение будут повторно использоваться ранее созданные потоки, если они доступны

Я не понимаю, как это реализовано. Я предоставляю в методе выполнения метода исполнителя мой собственный поток, например

  ExecutorService myCachedPool = Executors.newCachedThreadPool();
  myCachedPool.execute(new Runnable(){public void run(){  
     //do something time consuming

  }});

Как можно повторно использовать этот пользовательский поток, который я удаляю в структуру исполнителя?
Разрешено ли Executor вызывать метод start () более 1 раза, а мы не можем в наших программах? Я что-то не понимаю?

Спасибо.

6
задан Cratylus 19 September 2010 в 10:48
поделиться