Ich bin der Meinung, dass ein paar Kalibrierungen für die Antworten veröffentlicht werden sollten:
"Bist du sicher, dass du es niemals überschreiben willst?"
Nein ! Ich würde nicht. Das ist wie zu sagen: "Sind Sie sicher, dass Sie diese Variable als privat deklarieren möchten?" Denn wenn ich eine Variable, die ich verwende, als öffentlich deklarieren könnte, ohne befürchten zu müssen, dass andere Entwickler meine Entwurfslogik durcheinander bringen könnten, wäre das Codieren ein Kinderspiel. Einer der wichtigsten Zwecke der OOPS-Konzepte für Umfang, Abstraktion, Polymorphismus, Fehlerbehandlung usw. besteht darin, anderen Entwicklern das Design und die Absichten Ihres Codes mitzuteilen. Wie in der Frage ausgeführt, zwingt Sie niemand, wenn Sie die Startmethode überschreiben super.start () verwenden. @Codebender hat eine Startmethode für einen Thread geschrieben, ohne super.start () zu verwenden, und der Compiler hat sich nie beschwert. Es steht ihm also frei, den gesamten Mechanismus des Threading zu brechen, und der Compiler soll ihn einfach passieren lassen? Die Startmethode des Threads stellt sicher, dass die Ausführungsmethode aufgerufen und zum richtigen Zeitpunkt ausgeführt wird! Es ist entscheidend für das Konzept des Einfädelns. Ich würde mich sehr über eine Korrektur freuen, wenn ich hier etwas verpassen würde. 2.
Da die empfohlene Methode zum Erstellen eines Starts eines Threads nicht darin besteht, Thread zu unterordnen.
OK, wenn Codebender vom Design her erlaubt ist, Thread zu sublassieren und die Startmethode durcheinander zu bringen. Nach dieser Logik ist es das Design, das sich selbst in den Fuß schießt. Nach einer anderen Aussage (der ich voll und ganz zustimme) ist Runnable der empfohlene Weg. Warum erlauben wir dann der Thread-Klasse überhaupt, den Thread ohne Einschränkungen zu instanziieren? Darauf folgt:
Sie können die Implementierung von start () nicht durch Ihre eigene Implementierung ersetzen.
Das unterstützt tatsächlich die Behauptung von Codebender, dass die Startmethode endgültig sein sollte, wenn Sie das sagen .. ^
Der eine Punkt, der gültig ist, wird bereits als Randnotiz erwähnt, ist aber die eigentliche Antwort auf diese Frage
"Rückwärtskompatibilität".
Tatsächlich wurden Verbesserungen sogar erst in JDK 5.0 vorgenommen, als sie viele wichtige Ergänzungen und Erläuterungen zum Java-Parallelitätsmodell enthielten. Wir möchten, dass die Abwärtskompatibilität vollständig unterstützt wird, und deshalb ist die Thread-Klasse immer noch genau so, wie sie zuvor war, obwohl die Runnable-Schnittstelle heutzutage die empfohlene Methode ist.
Auch hier würde ich mich sehr über eine Korrektur freuen, wenn ich etwas verpassen würde.