Warum müssen wir run
Methode der thread
Klasse zu erweitern, wenn Sie es erweitern. Solange ich weiß, wann wir eine Klasse erweitern, überschreiben wir Methoden, die abstrakt sind. Aber run method hat die Definition public void main(). Warum ist es zwingend erforderlich, es zu überschreiben?Warum müssen wir die run() -Methode überschreiben Thread-Klasse
Antwort
Die Essenz eines Threads ist, dass es etwas ausführt ... Also die Thread-Abstraktion würde natürlich erfordern, dass Sie etwas zum Ausführen bereitstellen. Dies wird in Java erreicht, indem Sie run() implementieren müssen.
https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#run()
Weil Thema implementiert Runnable und es hat eine Methode run(), die keine Implementierung hat (Sie können nicht vorhersagen, was Sie „run“ wollen)
Daher, wenn Sie die Thread-Klasse erweitern , müssen Sie die run() -Methode überschreiben
PS: Sie können eine Klasse erstellen, die Thread-Klasse erweitert und überschreibt run() -Methode, Java wird keinen Fehler werfen, aber wenn Sie den Thread starten werden Sie sein nur Ausführen einer leeren Implementierung (also im Grunde nichts)
Wie Sie einen Thread für einen bestimmten Zweck erstellen. Um dies zu erreichen, müssen Sie einen Code schreiben.
In run()
von Thread
Klasse, die Implementierung tut nichts. Sie haben Ihre eigene Logik hinzugefügt, um Ihren Zweck zu erreichen. Einfach überschreiben run()
schreiben Sie Ihre Logik darin und es ist getan.
Nun, wenn Sie Fragen haben, dass warum Java nicht diese run()
als abstrakte Methode halten hat dann sehen Sie sich bitte Why is Thread not an abstract class and start() not final?
Post Wenn wir eine Klasse erweitern, wir außer Kraft setzen nicht nur die abstrakten Methoden. Überschreiben ist das, was wir tun, wenn wir eine spezifischere Implementierung einer bestimmten Elternklassenmethode in der Kindklasse bereitstellen müssen. Der Grund, warum wir run
außer Kraft setzen, wenn wir die Thread-Klasse erweitern, besteht darin, dass ein Teil des Codes multi-threaded ausgeführt werden soll. Daher haben sich die Entwickler von Java auf einen Namen für die zu überwindende Methode geeinigt. Andernfalls würde jeder Entwickler seine eigenen Namen für die Methode verwenden und der Compiler würde nicht wissen, wo der Multi-Thread-Code ist.
- 1. Warum müssen wir die init-Methode angeben?
- 2. Warum müssen wir vor() warten()?
- 3. Überschreiben wir beim Überschreiben einer Methode nicht die gesamte Methode? Ich habe versucht, java.awt.Container.paint
- 4. Beacon: Warum müssen wir Tx power
- 5. Warum Clone-Methode in Java überschreiben
- 6. Warum können wir `||` und `&&` nicht überschreiben?
- 7. Warum müssen wir Lua's collectgarbage() zweimal anrufen?
- 8. Warum müssen wir UpdateWindow nach ShowWindow aufrufen?
- 9. Warum müssen wir eval JSON Klammern hinzufügen?
- 10. Warum müssen wir Platz vor% c setzen?
- 11. Warum müssen wir die wahre Position in Kalman-Filtern schätzen?
- 12. Warum müssen wir die Variable __block auf Null setzen?
- 13. Warum müssen wir die Klassen Apply und Applicative type unterscheiden?
- 14. Warum müssen wir die Cache-Größe klein halten?
- 15. Warum müssen wir ./ für die Ausführung Shell-Skript verwenden
- 16. Warum verwenden wir die Übergeordnete Klassenreferenz zum Überschreiben in Java?
- 17. Die OpenExeConfiguration-Methode überschreiben
- 18. Warum müssen wir virtuelle Methoden als solche deklarieren?
- 19. Wenn wir die Methode toString() überschreiben, sollten wir immer eine String-Repräsentation des Objekts zurückgeben?
- 20. Warum müssen wir LayoutInflater in Android nicht instanziieren?
- 21. Müssen wir * .xcuserstate einchecken?
- 22. Müssen wir eine Struktur malloc?
- 23. Müssen die Operatoren == und! = Beim Überschreiben der Equals-Methode überschrieben werden? (.NET)
- 24. Eine Java-Methode überschreiben
- 25. Müssen Methode überschreiben, die in einem Namspace mit einer anderen Klasse ist, die es erstellt
- 26. Android - Warum sollten wir adapter.notifydatasetChanged() Methode verwenden?
- 27. In welcher Situation müssen wir `multiprocessing.Pool.imap_unordered` verwenden?
- 28. Warum rufen wir doesNotRecognizeSelector auf: Methode?
- 29. Warum müssen wir leere virtuelle Methode der Elternklasse in ASP.NET MVC anrufen
- 30. Warum müssen wir verwenden, außer und "?" zusammen statt, wenn allein