Ejecución de un nuevo thread
La creación de un nuevo thread no implica necesariamente que se empiece a ejecutar algo. Hace falta iniciarlo con el método start(), ya que de otro modo, cuando se intenta ejecutar cualquier método del thread -distinto del método start()- se obtiene en tiempo de ejecución el error IllegalThreadStateException.
El método start() se encarga de llamar al método run() de la clase Thread. Si el nuevo thread se ha creado heredando de la clase Thread la nueva clase deberá redefinirir el método run() heredado. En el caso de utilizar una clase que implemente la interface Runnable, el método run() de la clase Thread se ocupa de llamar al método run() de la nueva clase.
Una vez que el método start() ha sido llamado, se puede decir ya que el thread está “corriendo” (running), lo cual no quiere decir que se esté ejecutando en todo momento, pues ese thread tiene que compartir el tiempo de la CPU con los demás threads que también estén running. Por eso más bien se dice que dicha thread es runnable.
Fuente: Aprenda Java como si estuviera en primero de la Universidad de Navarra