Threads

 

Threads

Soll in Java ein Prozess zeitgesteuert ablaufen, brauchen wir einen Thread. Thread heisst Faden: Etwas soll wie an einem Schnürchen ablaufen! Es ist auch möglich, mehrere Threads gleichzeitig ablaufen zu lassen. Es gibt mehrere Arten mit Threads zu arbeiten, wir wählen die einfachste:

  • Erstellen Sie ein neues Projekt z.B. namens TestThread vom Typ Basic Java Application.
  • Ihre Klasse soll "runnable" sein, sie muss also das Interface Runnable implementieren:

    public class TestThreadFrame extends Frame implements Runnable {

  • Deklarieren Sie zwei Klassenvariablen (vor dem Konstruktor), den Thread, der dann ablaufen soll und ein Label, damit Sie was hineinschreiben können
    :
    Thread thread;
    Label label;
  • Im Konstruktor erzeugen Sie das Label und den Thread:

    label = new Label();
    add(label,BorderLayout.SOUTH);
    thread = new Thread(this);
    thread.start();
  • Nach dem Konstruktor deklarieren Sie die Methode run(), welche ausgeführt wird, nachdem der Thread gestartet wurde. Die Methode schreibt einfach die Zahlen 1 bis 10 in das Label, aber nicht sofort, sondern alle 2000 ms eine. Mit der Methode sleep() des Thread kann die Ausführung für eine bestimmte Zeit angehalten werden. Es könnte ja sein, dass jemand den Thread abbricht währenddem er schläft. Deshalb muss die Methode in einem try - catch - Block sein:

    public void run() {
      int nr = 0;
      for (int i=0;i<10;i++) {
        nr++;
        label.setText(""+nr);
        try {
          Thread.currentThread().sleep(2000);
        }
        catch (InterruptedException e) {
          System.out.println("Der Thread wurde unterbrochen!");
        }
      }
    }


    So kann man z.B. eine Folge von Bildern als Film zeigen oder wie in der folgdenden Spielerei etwas bewegen:
  • Deklarieren Sie in der Klasse:

    int x = 200;
    int y = 200;


  • Ergänzen Sie in der Methode run() in der for - Schlaufe:

    x = x + (int)(Math.random()*20)-10;
    y = y + (int)(Math.random()*20)-10;
    repaint();


  • Erstellen Sie nach der Methode run() eine Methode paint():

    public void paint(Graphics g) {
    g.drawRect(x,y,10,10);
    }

Wie immer, sind jetzt Ihre Ideen gefragt!