kleines Thread Problem

Stigma

Gesperrt
Ich habe folgenden Thread:

Code:
Thread suchen = new Thread( new FestplatteDurchsuchen());
       suchen.run();
Beim start soll eine in FestplatteDurchsuchen enthaltende Methode gestartet werden und diese müsste ich mit Parameter füttern.

Was müsste ich nun schreiben?
 
Sers!

Also direkr eine Parameter zu übergeben ist mir in diesem Falls nicht bekannt. (Was nicht heißen soll, dass es nicht irgentwo einen Weg gibt!)

Also mein Vorschlag wäre:

Code:
class Festplatte {

    Parameter param;

    public FestplatteDurchsuchen (Parameter paramIn) {

          param = paramIn;
    }

    public void run() {

          method();

     }

      public void method() {

          // param verarbeiten, dieser Parameter ist jetzt klassenweit bekannt

      }


}

Code:
Thread suchen = new Thread( new FestplatteDurchsuchen(param));
suchen.start();

Bei dieser Lösung übergibts du den Parameter ersteinmal bei der anonymen Objektbildung dem Konstruktor.

PS.: Soweit ich weiß, werden Thread, wie in diesem Falls aber nicht direkt über Thread.run() sondern über Thread.start() ausgerufen. Die run-Methode wird dann automatisch verarbeitet!

Ich hoff' ich konnt helfen!

macsx
 
Zuletzt bearbeitet:
Code:
class Festplatte {

    Parameter param;

    public FestplatteDurchsuchen (Parameter paramIn) {

          param = paramIn;
    }

  ...

Ich übergebe ja nur den namen das Parameters. wie öffne ich nun param; oder method()?
 
Wenn z.B. als Parameter eine Variable vom Typ "int" benötigt wird, sähe das so aus:


Code:
// In dieser thread-Bildung wird automatisch dem Konstrukt 
der Klasse "FestplatteDurchsuchen"  der Parameter 104 übergeben.

Thread suchen = new Thread( new FestplatteDurchsuchen(104));

// start() ruft automatisch die run-Methode von "FestplatteDurchsuchen" auf

suchen.start();



Code:
/** Der Konstrukt bekommt dem Parameter (paramIn) = 104 ,s.o. übergeben und 
"speichert" ihn als (int) c       c=paramIn; 
* Diese Variable ist nun klassenweit verfügbar! start() ruft run() auf; run() ruft deine 
Methode, in diesem Fall "method" auf, die nun auch
* mit der Variable arbeiten kann!
*/

class Festplatte {

    int c;

    public FestplatteDurchsuchen (int paramIn) {

          c = paramIn;
    }

    public void run() {

          method();

     }

      public void method() {

          // param verarbeiten, dieser Parameter ist jetzt klassenweit bekannt

      }


}
    }
 
Code:
/** Der Konstrukt bekommt dem Parameter (paramIn) = 104 ,s.o. übergeben und 
"speichert" ihn als (int) c       c=paramIn; 
* Diese Variable ist nun klassenweit verfügbar! start() ruft run() auf; run() ruft deine 
Methode, in diesem Fall "method" auf, die nun auch
* mit der Variable arbeiten kann!
*/

class Festplatte {

  |-->  int c;
  |
  |  public FestplatteDurchsuchen (int paramIn) {
  |
  |         c = paramIn;
  |
  |       method();
  |  }
  |
  |  public void run() {
  |
  |        method();
  |
  |  }
  |
  |    public void method() {
  ------------>
          // param verarbeiten, dieser Parameter ist jetzt klassenweit bekannt

      }


}
    }

So hast du dir das gedacht!! Ok, eine doch elegante Lösung!

Danke macsx für deine Bemühungen
 
NIIIIIIIIIIIICHT GANZ!

Du braucht die Methode method() nicht extra aufrufen

Das erledigt die run()-Methode automatisch für dich!


suchen.start() RUFT AUTOATISCH run() (in der Klasse FestplattenDurchsuchen)AUF
 
Pssst,

was schreit Ihr denn hier rum, man hört euch bis in die anderen Beiträge ! :)

Achso :

Code:
class Festplatte implements Runnable { ... }

nur zur Vollständigkeit !

:) Gruß JAdix
 
Zurück