Unterschied Thread und Runnable?

Status
Nicht offen für weitere Antworten.

Daniel_L

Bekanntes Mitglied
Hallo,

ich habe zwei Fragen zu Threads:

1.) Was ist der Unterschied zwischen Thread und Runnable? Zwei Beispiele (erstes aus Java Insel 6, zweites ein kleines Programm von mir):

Code:
public class DateCommand implements Runnable { 
	public void run() { 
		for ( int i = 0; i < 20; i++ ) System.out.println( new java.util.Date() );
	}
}

Thread t1 = new Thread( new DateCommand() );
t1.start();

und

Code:
class MaleFraktale extends Thread {
    /**
     * Diese Funktion wird ausgeführt, wenn der Thread 
     * per "start()" gestartet wird
     */
    public void run() {

        // solange der Thread aktiv ist, Zeichenfunktion durchführen
        while(!isInterrupted()) {

            // Zuerst das Mandelbrot initiieren,
            // damit jedesmal eine zufällige Fraktalform erscheint
            InitMandel();

            // danach das Mandelbrot zeichnen
            ZeichneMandel();            

            // kurze pause einlegen, damit nicht zu schnell
            try {
                // 5 Sekunden warten
                sleep(5000);
            } catch(InterruptedException e) {
                return;
            }
        }
    }
}


meinThread = new MaleFraktale(zeichenflaeche);
meinThread.start();


Ist das nach Belieben des Autors oder gibt es Regeln, wann besser Fall1 und wann eher Fall2 zur Anwendung kommen sollte?

Und Frage 2: Warum muss (so hab ich gelesen) im 2. Beispiel ein try/catch in die Run-Methode, im ersten Fall aber nicht?


Gruß
Daniel
 

Wildcard

Top Contributor
1) Runnable ist ein Interface, Thread eine Klasse.
Da es keine Mehrfachvererbung von Klassen gibt scheidet der Thread immer aus wenn deine Klasse bereits eine Superklasse hat, daher verwendet man meistens Runnable da dann alle Möglichkeiten offen stehen.
2)Im ersten Code-Snippet ist kein Code der die Exception auslösen könnte, also muss man sie auch nicht fangen.
 

Leroy42

Top Contributor
1. Die Klasse Thread ist vorzuziehen, wenn du Methoden dieser Klasse brauchst, ansonsten Runnable

2. Die Try-Catch-Anweisung ist wegen des sleep-Aufrufs notwendig, da während
der Schlafphase von außen ein interrupt() auf den Thread aufgerufen
werden könnte. Wenn du sleep benutzst mußt du auch in einem Runnable-Objekt
dieses mit try-catch versehen.
 

Daniel_L

Bekanntes Mitglied
Wildcard hat gesagt.:
1) Runnable ist ein Interface, Thread eine Klasse.
Da es keine Mehrfachvererbung von Klassen gibt scheidet der Thread immer aus wenn deine Klasse bereits eine Superklasse hat, daher verwendet man meistens Runnable da dann alle Möglichkeiten offen stehen.
2)Im ersten Code-Snippet ist kein Code der die Exception auslösen könnte, also muss man sie auch nicht fangen.

Alles klar, vielen Dank. Wenn ich das richtig verstehe, macht man mit Runnable generell nichts verkehrt?
 

Daniel_L

Bekanntes Mitglied
Leroy42 hat gesagt.:
1. Die Klasse Thread ist vorzuziehen, wenn du Methoden dieser Klasse brauchst, ansonsten Runnable

2. Die Try-Catch-Anweisung ist wegen des sleep-Aufrufs notwendig, da während
der Schlafphase von außen ein interrupt() auf den Thread aufgerufen
werden könnte. Wenn du sleep benutzst mußt du auch in einem Runnable-Objekt
dieses mit try-catch versehen.

Super, vielen Dank für die schnelle Hilfe.
 

byte

Top Contributor
Ich würde immer den Weg über das Runnable bevorzugen! Nicht zuletzt, da es seit Java 5 interessante Neuerungen in dem Bereich gibt und man es somit u.a. der VM überlassen kann, die Threads zu managen.
 

Leroy42

Top Contributor
Ich schließe mich byto an.

Vor allem deshalb, weil man die Thread-Methoden
wie setPriority(..)... auch aus einem Runnable mit
Thread.getCurrentThread().setPriority(...) problemlos
aufrufen kann.

Ich selbst habe bis heute nicht ein einzigesmal von
Thread abgeleitet sondern immer nur von Runnable. :meld:
 
G

Guest

Gast
Wildcard hat gesagt.:
2)Im ersten Code-Snippet ist kein Code der die Exception auslösen könnte, also muss man sie auch nicht fangen.

I will meinen bestehenden Code auch ändern von Thread auf Runnable benutzen. Nun frage ich mich ob ich einen try/catch block. In der Run methode wird über die Runtime ein eine .exe datei (7zip.exe) aufgerufen um eine rechtsgeklickte datei zu komprimieren. Brauche ich da eine try/catch methode in der class mit der implementieren Runnable?
 
G

Gast

Gast
und wenn ich einen try/catch für die exception abfangen benötige, benötige ich dann auch eine while schleife ala:

while (!isInterrupted())
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
P Unterschied Installation von zipped JDK vs Installer-JDK (auf Windows)? Java Basics - Anfänger-Themen 2
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
K Unterschied Information Hiding und Kapselung? Java Basics - Anfänger-Themen 2
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
G Methoden wo ist der Unterschied?? Java Basics - Anfänger-Themen 11
D Unterschied charAt() substr() Java Basics - Anfänger-Themen 3
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
H .jar unterschied .class Java Basics - Anfänger-Themen 3
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
K Unterschied for-Schleife Java Basics - Anfänger-Themen 14
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
M Schlüsselworte Unterschied: String.matches und Pattern.compile Java Basics - Anfänger-Themen 2
G Unterschied Instanz- Klassenvariable Java Basics - Anfänger-Themen 11
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
H Unterschied BufferedReader und BufferedInputStream Java Basics - Anfänger-Themen 4
N Unterschied von Post- und Preinkrement Java Basics - Anfänger-Themen 3
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
T Unterschied dynamischer und statischer Laufzeittyp Java Basics - Anfänger-Themen 1
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
J Warum ist das ein Unterschied (Integer / int) Java Basics - Anfänger-Themen 2
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
F Erste Schritte Unterschied: Array "leer" / "null" Java Basics - Anfänger-Themen 3
V Unterschied x++ und x=x++ Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
A Klassen Unterschied Warteschlange, Stapel und Liste Java Basics - Anfänger-Themen 3
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
M Wo liegt der Unterschied? Deklaration Klasse oder Konstruktur Java Basics - Anfänger-Themen 3
S Unterschied print() und println() Java Basics - Anfänger-Themen 3
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
S Unterschied Ausführung in IDE <-> Befehlszeile Java Basics - Anfänger-Themen 0
C Unterschied Objekte! Java Basics - Anfänger-Themen 13
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
A Unterschied Textdatei und Quelltextdatei Java Basics - Anfänger-Themen 5
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
R Erste Schritte Unterschied Array-Parameter zu Array als Parameter? Java Basics - Anfänger-Themen 7
V Unterschied Array & ArrayList Java Basics - Anfänger-Themen 13
D Geschwindigkeits unterschied bei import? Java Basics - Anfänger-Themen 13
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
L Unterschied zu C++ Java Basics - Anfänger-Themen 6
A Unterschied JDK SDK Java Basics - Anfänger-Themen 4
L Objekterzeugung Unterschied..? Java Basics - Anfänger-Themen 6
K Unterschied zwischen break und continue in einer Schleife Java Basics - Anfänger-Themen 14
B Klassen Unterschied Konstruktoren. Java Basics - Anfänger-Themen 3
A Exakte Unterschied zwischen Java EE und Java SE? Java Basics - Anfänger-Themen 4
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
S Interface Unterschied: setContentPane() & getContentPane().add Java Basics - Anfänger-Themen 5
Helgon Unterschied runnable und normale jar Java Basics - Anfänger-Themen 6
D Unterschied bidirectional unidirectional Java Basics - Anfänger-Themen 10
F Interface Unterschied von Attributen und Methoden bei abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5
O Java unterschied zwischen Interface und Interface_Referenzen!!?? Java Basics - Anfänger-Themen 7
I Unterschied Lizenz EPL und LGPL Java Basics - Anfänger-Themen 7
P Unterschied Windowclosed / WindowClosing Java Basics - Anfänger-Themen 10
J scheduleAtFixedRate scheduleWithFixedDelay Unterschied? Java Basics - Anfänger-Themen 17
S Erste Schritte Grundsatzfragen Unterschied Java / PHP Java Basics - Anfänger-Themen 6
P Unterschied JRE innerhalb/ außerhalb des JDK Verzeichnisses? Java Basics - Anfänger-Themen 5
H printf: Unterschied %f und %g Java Basics - Anfänger-Themen 5
M Unterschied SDK 1.4 und 1.6 Java Basics - Anfänger-Themen 5
S Unterschied java.util.prefs / java.util.Properties Java Basics - Anfänger-Themen 3
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
T Unterschied in Zahlendarstellungen Java Basics - Anfänger-Themen 2
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
K Unterschied Klassen- und Instanzattribute Java Basics - Anfänger-Themen 4
L Unterschied Konstruktor / Getter Setter Java Basics - Anfänger-Themen 13
S Unterschied Comparable und Comparator Java Basics - Anfänger-Themen 2
C unterschied generische typen und supertypen als methodenparameter Java Basics - Anfänger-Themen 3
J Instanzvariablen - Lokale Variablen - warum der Unterschied? Java Basics - Anfänger-Themen 5
P Unterschied dieser 2 code Zeilen Java Basics - Anfänger-Themen 12
I Datentypen Unterschied in Deklaration von ArrayList Java Basics - Anfänger-Themen 26
G Unterschied e extends y vs ? extends y Java Basics - Anfänger-Themen 5
M Unterschied append / write aus der Klasse Writer Java Basics - Anfänger-Themen 2
M unterschied OutpuStreamWriter und BufferedWriter Java Basics - Anfänger-Themen 5
B Unterschied zwischen String & char Array? Java Basics - Anfänger-Themen 5
J Unterschied Instanzattribut und Referenzvariable Java Basics - Anfänger-Themen 4
J Unterschied bei Schleifen Java Basics - Anfänger-Themen 2
B Was ist der unterschied zwischen Singleton und Strategy? Java Basics - Anfänger-Themen 6
B Variablen: unterschied zwischen Klassen und Instanzvariable Java Basics - Anfänger-Themen 2
W Unterschied JFrame und JLabel bezüglich Layout? Java Basics - Anfänger-Themen 2
B Generische Vererbung was ist der Unterschied? Java Basics - Anfänger-Themen 4
B ArrayList generisch? was ist der Unterschied? Java Basics - Anfänger-Themen 4
H Unterschied zwischen 2 Date in Sekunden am einfachsten? Java Basics - Anfänger-Themen 5
tanja Der Unterschied Zwischen Arrays in Java und ADA Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
D Unterschied innere Klasse/ anonyme innere Klasse Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben