Siento que se deben publicar algunas calirifcaciones para las respuestas:
"¿Estás seguro de que nunca querrás anularlo?"
No ! Yo no lo haría. Es como decir: "¿Estás seguro de que quieres declarar privada esta variable?" Porque si pudiera declarar pública cualquier variable que uso sin temer que otros desarrolladores puedan estropear mi lógica de diseño, la codificación sería muy sencilla. Uno de los propósitos más importantes de los conceptos de OOPS de alcance, abstracción, polimorfismo, manejo de errores, etc. es comunicar a otros desarrolladores el diseño y las intenciones detrás de su código.Como se señaló en la pregunta, cuando anula el método de inicio, nadie lo está forzando para usar super.start (). @Codebender escribió un método de inicio para un hilo sin usar super.start () y el compilador nunca se quejó. Entonces, ¿es libre de romper todo el mecanismo de Threading y se supone que el compilador debe dejarlo pasar? El método de inicio de Thread asegura que el método de ejecución sea llamado y ejecutado en el momento adecuado. Es fundamental para el concepto mismo de Threading. Estaría más que feliz de ser corregido, si me perdiera algo aquí. 2.
Porque la forma recomendada de crear un inicio de un hilo es no subclase de hilo.
Bien, si codebender está permitido por diseño, subclasear Thread y estropear el método de inicio, según esa lógica, es el diseño el que se dispara en el pie. Por otra declaración hecha, (con la que estoy completamente de acuerdo), Runnable es la forma recomendada. Entonces, ¿por qué permitimos que la clase Thread cree una instancia del hilo sin restricciones? A esto le sigue:
No puede reemplazar la implementación de start () por su propia implementación,
Eso en realidad respalda la afirmación de Codebender de que el método de inicio debería ser definitivo cuando dices eso .. ^
El único punto, que es válido, ya se menciona como nota al margen, pero es la respuesta real a esta pregunta.
"Compatibilidad con versiones anteriores".
De hecho, las mejoras se produjeron incluso hasta JDK 5.0, cuando incorporaron muchas adiciones y aclaraciones importantes al modelo de concurrencia de Java. Queremos que la compatibilidad con versiones anteriores sea compatible en todo momento y es por eso que la clase Thread sigue siendo exactamente como era antes, a pesar de que la interfaz Runnable es la forma recomendada hoy en día.
Una vez más, estaría más que feliz de ser corregido, si me perdiera algo.