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.
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? } }
Synes godt om
Ny brugerNybegynder
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.