Perfekt! Nu återstår bara ett litet problem...
Jag vill att tråden skall sova tills jag trycker på en knapp i en annan class. Om jag låter tråden sova, kan jag använda interrupt() för att avbryta den?
Hur skall jag skriva för att använda interrupt() ifrån en annan klass?
Själva sleep-grejen ligger i main
Här har du lite exempel-kod, tagen ur java 1.4.2 API DOC:
public void run() {
Thread thisThread = Thread.currentThread();
while (blinker == thisThread) {
try {
thisThread.sleep(interval);
synchronized(this) {
while (threadSuspended && blinker==thisThread)
wait();
}
} catch (InterruptedException e){
}
repaint();
}
}
public synchronized void stop() {
blinker = null;
notify();
}
När användaren trycker på knappen så sätts threadSuspende till TRUE, och programmet väntar, tills threadSuspended blir FALSE igen. Detta får du göra nånstans i koden.
Har du koden i main-metoden så kan det bli lite problematiskt att anropa den från andra klasser.
Du bör nog skapa en klass, som antingen ärver från klassen Thread, eller implementerar gränssnittet Runnable. Implementera ovanstående metoder i denna klass. Läs mer om hur Sun tycker att Javas Threads ska användas: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html
Där kan du läsa mycket matnyttigt om varför t ex metoderna Thread.suspend(), Thread.stop(), Thread.resume() är depricated, dvs metoder som inte bör användas och kan komma att tas bort i nyare versioner av Java (vet dock inte om de är borttagna ur 1.5).