Ya se ha aludido a esto, pero para que quede claro: crear un nuevo objeto Thread solo para llamar a su método run () es innecesariamente caro y debería ser una señal de alerta importante. Sería un diseño mucho mejor y más desacoplado crear un impl Runnable y (a) llamar a su método run () directamente si ese es el comportamiento deseado, o (b) construir un nuevo Thread con ese Runnable e iniciar el Thread.
Mejor aún, para un desacoplamiento aún mayor, consulte la Executor
interfaz y el marco en JDK 5 y versiones posteriores. Esto le permite, en pocas palabras, desacoplar la ejecución de la tarea (la instancia Runnable) de cómo se ejecuta (la implementación Executor, que podría ejecutar el Runnable en el Thread actual, en un Thread nuevo, utilizando un Thread existente de un grupo, Y qué no).