Threads extends Thread oder implements Runnable

y20frank

Mitglied
Hallo zusammen,
bin JAVA-Neuling und versuche mich gerade mit Threads zu beschäftigen. Dabei ist mir die Frage aufgekommen, wie man das grundsätzlich "besser" angeht. Sollte man mit Thread mit implements Runnable oder eher mit "extends Thread" erstellen? Gibt es da wesentliche Unterschiede?
Danke und Gruß
Frank
 

faetzminator

Gesperrter Benutzer
Ja, immer möglichst nur das Interface implementieren. Ausser natürlich es gibt ein Adapter, welcher nicht benötigte Methoden einfach (leer) implementiert. Grund dafür wird wohl sein, dass es in Java "keine Mehrfachvererbung gibt", zumindest was das Erben von Klassen anbelangt.
 

y20frank

Mitglied
Ja, wegen der Mehrfachvererbuhg... leuchtet mir jetzt ein! *Groschen fällt*
Dann hab ich's ja bislang "richtig" mit "Runnable" angegangen. Danke für Eure Antworten! :)
Gruß
Frank
 
G

Gastredner

Gast
Zudem erwarten Klassen wie der ExecutorService (->Thread-Pool) Parameter, die das Runnable-Interface implementieren, was aus meiner Sicht ein weiterer Punkt für das Interface ist (einfacherer Umstieg auf Threadpools).
 

xehpuk

Top Contributor
Ich mache immer
Code:
extends Thread
. Natürlich mit der Ausnahme, dass ich noch von einer anderen Klasse erben muss. Das kommt aber fast nie vor.
 
G

Gastredner

Gast
Das Thread Runnable nicht nur implementiert, sondern auch im Konstruktor eine Runnable-Implementierung übergeben bekommen kann.
Tatsächlich würde sich die Frage des OP von Anfang an gar nicht erst stellen, hätte Sun sich auf eine einheitliche Linie festgelegt (entweder muss Thread erweitert werden oder erwartet auf jeden Fall eine Runnable-Implementierung). Ich frage mich einfach, was der Grund dafür gewesen sein mag, da ich keinen erkennen kann.
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
dass man ein Runnable-Interface implementieren kann ist ziemlich wichtig, fast unverzichtbar,
ansonsten wegen Vererbungsproblem viele unnötige separate Thread-Klassen mit Übergabe des Haupt-Objektes, unschönen Zugriff usw., das wäre ja schrecklich,
zudem braucht man so ein Mini-Interface für Übergabe an Excecutor usw., gäbe es nicht Runnable müsste man ein neues erfinden,
und könnte damit letztlich auch das Problem eine Zeile darüber lösen,
ohne Runnable-Interface wäre die Welt nicht schön,

also bleibt von deiner Frage höchstens der Teil, das Erben von Thread zu verhindern,
das wäre nicht ganz so schlimm, wann immer man das Thread-Objekt braucht könnte man es sich zu Beginn der run-Methode mit
Thread.currentThread() holen,
ab und zu braucht man es durchaus, z.B. wenn man mit interrupted arbeitet, gibt eigentlich keinen Grund diese Vererbung zu verbieten,

dass ständig Leute diese Frage stellen und vielleicht bei ersten Programmen damit Fehler machen finde ich nicht kritisch,
ist ein interessanter Bestandteil der Sprache, bei Betrachtung dieser Konzepte lernt man gut allgemein etwas zu Klassen und Interface usw.,
hat seine guten Seiten

edit:
Thread selber muss nicht unbedingt Runnable sein, dieser zuletzt auch genannte Punkt finde ich schon etwas bedenklicher
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
S Threads Thread wenn extends schon vergeben Java Basics - Anfänger-Themen 8
D MyActionListener extends Thread Java Basics - Anfänger-Themen 3
U extends JLabel & Thread Java Basics - Anfänger-Themen 2
mrStudent <? extends T> und <? super T> Java Basics - Anfänger-Themen 1
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
J extends Problem Java Basics - Anfänger-Themen 2
N extends und super vs new object Java Basics - Anfänger-Themen 4
JavaTalksToMe Extends/Implements Frage Java Basics - Anfänger-Themen 3
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
J Implements und Extends Java Basics - Anfänger-Themen 5
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
M mehrere extends? Java Basics - Anfänger-Themen 19
J doppelname nach schlüsselwort extends Java Basics - Anfänger-Themen 4
V Was bewirkt das Schlüsselwort extends in Verbindung mit class bzw. public class ? Java Basics - Anfänger-Themen 2
T extends und implements Java Basics - Anfänger-Themen 11
Crazynet 2 extends Java Basics - Anfänger-Themen 22
S Wrapper Klasse und extends Java Basics - Anfänger-Themen 2
W Methoden Rückgabedatentyp java.util.Map<java.lang.String,? extends ...> Java Basics - Anfänger-Themen 4
R Vererbung Übergabe von Variablen der Superklasse an Subklasse mit "extends" Java Basics - Anfänger-Themen 5
K Erste Schritte Extends Implements Java Basics - Anfänger-Themen 4
vandread Java Wildcards - Wann super wann extends? Java Basics - Anfänger-Themen 2
F Anfängerfrage zu extends Java Basics - Anfänger-Themen 12
B addAll(Collection<? extends E> c) Java Basics - Anfänger-Themen 9
T Input/Output StructuredFileReader extends BufferedReader Java Basics - Anfänger-Themen 6
K Erste Schritte extends vererbung Java Basics - Anfänger-Themen 15
P Class<? extends Entity> Array Java Basics - Anfänger-Themen 9
A final und extends Java Basics - Anfänger-Themen 14
C Vererbung "extends" umgehen mittels Objekterzeugung?! Java Basics - Anfänger-Themen 29
L Implements<-->extends und Interface Java Basics - Anfänger-Themen 10
T Collections Queue<? extends Number> add() offer() Java Basics - Anfänger-Themen 13
S Klasse extends HashMap Java Basics - Anfänger-Themen 20
L Problem mit Vererbung (extends) cannot find symbol Java Basics - Anfänger-Themen 3
H2SO3- Designfragen (mehrfach extends) Java Basics - Anfänger-Themen 11
G Unterschied e extends y vs ? extends y Java Basics - Anfänger-Themen 5
X List von Klasse B als List von Klasse A (B extends A) Java Basics - Anfänger-Themen 2
H extends Locale Java Basics - Anfänger-Themen 4
O import ja....extends nein Java Basics - Anfänger-Themen 5
G Muss es immer extends sein ? Java Basics - Anfänger-Themen 9
N class Test<E extends MyAbstractClass> => typ von E? Java Basics - Anfänger-Themen 5
K mehrere Extends Java Basics - Anfänger-Themen 2
S extends Vector<xyz> Java Basics - Anfänger-Themen 10
S new .() extends JDialog {.} Java Basics - Anfänger-Themen 15
S extends und Konstruktor Java Basics - Anfänger-Themen 8
E Interface extends Observable Java Basics - Anfänger-Themen 13
G Wiedermal vererbung, extends JDialog extends Exception ? Java Basics - Anfänger-Themen 8
G Innere klasssen unde "extends" klassen definieren, Java Basics - Anfänger-Themen 2
frau-u JMenu mit extends JPanel? Java Basics - Anfänger-Themen 4
G "extends DBConnection" funktioniert nicht Java Basics - Anfänger-Themen 15
N extends / implements / static, bedeutung ?? Java Basics - Anfänger-Themen 12
C Problem mit Zeichnen auf einer extends Canvas Class... Java Basics - Anfänger-Themen 2
Leyla Thread isInterrupt Java Basics - Anfänger-Themen 18
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
F influxdb Upload in eigenem Thread Java Basics - Anfänger-Themen 2
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
T Thread beenden aus zweiter Klasse Java Basics - Anfänger-Themen 4
A Thread - Synchronized Java Basics - Anfänger-Themen 10
A Thread Producer - Consumer Java Basics - Anfänger-Themen 1
A Thread-Semhapore Java Basics - Anfänger-Themen 0
A Thread Exchanger Java Basics - Anfänger-Themen 22
A Thread-Cyclicbarrier Java Basics - Anfänger-Themen 4
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
A Thread-Verklemmung Java Basics - Anfänger-Themen 10
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
A Thread find number Java Basics - Anfänger-Themen 8
F Thread.sleep() Java Basics - Anfänger-Themen 5
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 3
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 8
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
M Thread-Zustände Java Basics - Anfänger-Themen 6
CptK For-Schleife in Thread nach jedem Durchlauf pausieren Java Basics - Anfänger-Themen 35
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 1
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 0
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
C Thread und TimerTask, Verstädnisproblem Java Basics - Anfänger-Themen 10
amgadalghabra Sorting Thread Launcher Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
A Thread Java Basics - Anfänger-Themen 4
A Thread Java Basics - Anfänger-Themen 1
A Thread Java Basics - Anfänger-Themen 0
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
B Thread / Prozess stoppen? Java Basics - Anfänger-Themen 22
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
B Threads Thread sleep() Method einfache Frage Java Basics - Anfänger-Themen 8
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 0
J Threads PrograssBar update während thread Java Basics - Anfänger-Themen 13
D Compiler-Fehler Wert auf Datenbank übertragen und Sleep Thread Java Basics - Anfänger-Themen 3
Spencer Reid JavaFX Memory Thread.sleep Java Basics - Anfänger-Themen 1
S Thread.sleep mit JProgressBar Java Basics - Anfänger-Themen 1
ralfb1105 Frage zu Thread Synchronisation mit wait() und notify() Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben