Hej!
För att på ett korrekt sätt skapa små delay's i Java så använder du dig utav klassen Thread eller interface:t Runnable.
Om du kikar i java api specification ( http://java.sun.com/j2se/1.4.1/docs/api/ )
på klassen Thread så ser du att den har bl a följande metod:
sleep(long millis)
den metoden kan du använda för att få ditt program att stanna upp i x antal millisekunder;
1000 ms = 1 sekund ;)
Idén med Threads(på svenska: trådar) är att du kan dela upp programmet i x antal trådar och låta varje tråd köras separerat. På detta vis så kan du tillsynes få en massa händelser att hända samtidigt.
T ex om du har en server så kan du ha en massa olika trådar som behandlar varje ny klient.
Om du inte körde med en trådad serverr så skulle klient 2 få snällt vänta på att klient 1 blir klar osv osv.
Med trådar så får varje tråd en viss tid att "göra saker", sedan innan turen går till nästa tråd osv osv.
Eftersom systemet växlar mellan varje tråd med några millisekunders mellanrum så ser det ut som om alla trådar körs samtidigt.
Om jag vet rätt så är det operativsystemet som växlar, inte Java Runtiem Environment. Därför så är det svårt att exakt veta i vilken turordning trådarna körs.
...
...
Om du ska låta din klass ärva(extends) Threads eller om du implementerar Runnable beror lite på hur din klass är uppbyggd(t ex om den redan ärver en annan klass osv) men båda alternativen fungerar.
om du ärver Thread:
varje Thread klass innehåller metoden start() och run();
start() metoden kallar på metoden run();
När du ärver Threads så skapar du en egen version av run(), eftersom den i klassen Threads är tom(antar jag). Detta kallas för funktionsöverlagring(method overloading).
dvs det som du vill att skall hända när din tråd startas, skall placeras i metoden run().
Exempel:
en simple Thread klass vars run() metod skriver ut "Hej!" med en sekunds paus i oändlighet:
public void run()
{
for(;;) // oändlig loop
{
Thread.sleep(1000); // tråden sover i en sekund
System.out.println("Hej!");
}
}
för att detta skall fungera så måste du placera for loopen inuti en try-catch sats eftersom metoden sleep kan kasta en InterruptedException.
Allt du behöver göra nu är att skapa en egen klass som ärver av Thread samt kallar på metoden run().