2016-05-13 13 views
2

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

1

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.

0

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)

0

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?

0

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.

Verwandte Themen