Thread startet nicht

Status
Nicht offen für weitere Antworten.

Marcel_Handball

Bekanntes Mitglied
Hallo zusammen,
ich habe nun schon mehrere Applets geschrieben, die Thread verwenden, jedoch hatte ich stets die run-Methode in der Hauptklasse stehen.
Nun wollte ich eine separate Klasse für das Thread erstellen, da ich dies brauchen werde, wenn ich mal mehrere Thread gleichzeitig ausführen muss.

Vielleicht kann mir einer von euch sagen, warum der Thread nun nicht gestartet wird:

Code:
import java.applet.*;
import java.awt.*;

public class zweithreads extends Applet
{   int y=0;
    malen zeichenfeld = new malen();

    
    public void init(){
        setBackground(Color.black);
        setLayout(null);
     
        zeichenfeld.setBackground(Color.white);
        zeichenfeld.setBounds(10,10,300,200);
        add(zeichenfeld);    
    }

    public class ersterthread implements Runnable{
        Thread lauf;

        void start(){
            if(lauf==null){lauf= new Thread(); lauf.start();}
        }
    
        public void run(){
            Thread thisThread = Thread.currentThread();
    
            while(lauf == thisThread){
                y++;
                zeichenfeld.repaint();
                try{lauf.sleep(10);}catch(InterruptedException e){}
                if(y==200){stop();}
            }
        }

        void stop(){lauf=null;}
    }


    public class malen extends Canvas{
       public void paint(Graphics g){
           g.setColor(Color.red);
           g.drawLine(10,y,200,y);
       }
    }

}

Schon im Voraus Danke für eure Hilfe!!
Marcel
 
Als erstes bräuchtest du ein Objekt der Klasse auf dem du deine 'start' Methode aufrufen kannst.
Zweitens nützt dir das hier nichts:
Code:
if(lauf==null){lauf= new Thread(); lauf.start();}
Wenn der Thread irgendwas tun soll dann musst du ihm dein Runnable, also 'this' übergeben.
Alles in allem eine sehr seltsame Struktur :bahnhof:
 
Ich bin noch nicht so erfahren mit Thread, und da ich ja meine Programme auch recht "ordentlich" schreiben möchte, würd ich dich gerne mal fragen, wie man denn am besten einen Thread in eine eigene Klasse auslagert und aufruft.

Alles in allem eine sehr seltsame Struktur bahnhof.gif

Worauf ich hinziele ist folgendes: Ich möchte mehrere Thread parallel laufen lassen, daher jeweils eine eigene Klasse.
 
Einfach eine Klasse die Runnable implementiert, und irgendwo new Thread(new MyClass).start() aufrufen.
Dein seltsamer vergleich mit currentThread ist mir etwas suspekt.
Warum machst du das?
Ist doch viel einfacher eine boolean Variable im Schleifenkopf zu prüfen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben