Java - Threads: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 7: Zeile 7:
 
* Objekt der Klasse erstellen
 
* Objekt der Klasse erstellen
 
* start() Methode aufrufen (nicht run() sonst läuft es nicht parallel)
 
* start() Methode aufrufen (nicht run() sonst läuft es nicht parallel)
 +
<pre>
 +
public class DateThread extends Thread
 +
{
 +
  @Override public void run()
 +
  {
 +
    for ( int i = 0; i < 20; i++ )
 +
      System.out.println( new Date() );
 +
  }
 +
}
  
 +
Thread t = new DateThread();
 +
t.start();
 +
// oder
 +
// new DateThread().start();
 +
</pre>
 +
Vorteil: Der Konstruktor des Threads kann ohne runnable Objekt aufgerufen werden, weil das Objekt die run Methode schon geerbt hat.
 
== Thread über implements Runnable ==
 
== Thread über implements Runnable ==
 
* Klasse erstellen die Runnable implementiert -> Vorteil extends ist frei für andere Vererbung
 
* Klasse erstellen die Runnable implementiert -> Vorteil extends ist frei für andere Vererbung

Version vom 9. März 2013, 17:51 Uhr

Links

http://openbook.galileocomputing.de/javainsel9/javainsel_14_002.htm#mj45ef6b526108a654e748170e45b47506

Thread über Vererbung von Thread

  • Klasse erstellen die von Thread erbt
  • run() Methode mit gewünschter Funktionalität überschreiben
  • Objekt der Klasse erstellen
  • start() Methode aufrufen (nicht run() sonst läuft es nicht parallel)
public class DateThread extends Thread
{
  @Override public void run()
  {
    for ( int i = 0; i < 20; i++ )
      System.out.println( new Date() );
  }
}

Thread t = new DateThread();
t.start();
// oder
// new DateThread().start();

Vorteil: Der Konstruktor des Threads kann ohne runnable Objekt aufgerufen werden, weil das Objekt die run Methode schon geerbt hat.

Thread über implements Runnable

  • Klasse erstellen die Runnable implementiert -> Vorteil extends ist frei für andere Vererbung
  • Aufgabe in run() definieren
  • Thread Objekt erstellen und diesem ein Objekt der neuen Klasse übergeben.
  • Thread mit start() starten

Beispiel

package com.tutego.insel.thread;

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

class CounterCommand implements Runnable
{
  @Override public void run()
  {
    for ( int i = 0; i < 20; i++ )
      System.out.println( i );
  }
}

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

Thread t2 = new Thread( new CounterCommand() );
t2.start();