Avatar billede martinhrj Nybegynder
24. november 2001 - 12:12 Der er 1 løsning

Tråde

Hejsa alle sammen...

Jeg har et problem med nogle tråde. Jeg opretter først et objekt af HomeBankingThread (som implementerer \"Runnable\")...
          home1 = new  HomeBankingThread(\"nr1\");
Derefter laver jeg den til en tråd...
          Thread phil1 = new Thread(home1);
og starter den...
          phil1.start();

Mit problem er så at jeg ikke ved hvordan jeg sætter tråden til at sove(sleep()), eller kalder getName(), når jeg ikke får tråden med som parameter i run()-metoden i HomeBankingThread-klassen.

Er der nogle der har en løsning på dette, uden at jeg \"extender\" Thread i HomeBankingThread-klassen. For jeg skal bruge muligheden til at extende andre klasser i denne klasse.

På forhånd tak.
Avatar billede logical Nybegynder
24. november 2001 - 12:22 #1
Du kan ikke sætte en anden tråd til at sove, du kan kun sætte dig selv til at sove ved at bruge den statiske metode Thread.sleep(x);
Hvis du vil have andre til at sove, skal det gøres på en anden måde, eksempelvis:
Lave en metode i din klasse, hvor du kan sætte en boolean til true, når du ønsker at sove:
public synchronized void requestSleep(sleepTime) {
  this.sleepRequested = true;
  this.sleepTime = sleepTime;
  this.RequestTime = System.currentTimeMillis();
}

in kørende tråd skal så med jævne mellemrum checke om den er sat, og så sove, f.eks. fra en run metode:
public void run() {
  doSomething();
  checkSleep();
  doSomethingOther();
  checkSleep();
  ...
}

CheckSleep skulle så se sådan her ud:
private synchronized void checkSleep() {
  if (!sleepRequested) return; 

  sleepRequest = false;
  long since = System.currentTimeMillis() - this.requestTime();
  try { Thread.sleep(sleepTime-since); } catch (InterruptedException e) {}
}


Mht. at genkende din tråd.. Se nedenfor:

public class HomeBankingThread implements Runnable {
  private Thread owner = null;


  public void run() {
    owner = Thread.currentThread(); // Hvem kører denne metode?
  }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester