Normalt gör man såhär:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
try{
Thread.currentThred.sleep(<time in millis> );
}
catch(InterruptedException iex) { <some errorhandling if needed> }
Det är vist att göra en "hjälpklass" som har denna funktion om man måste sova trådar väldigt länge.
Lite trix. Ibland vill man låta en tråd vänta på att någon annan tråd skall göra något färdigt.
Då kan man använda funktionen Object.wait().
I det här exemplet så är det lite konstuerat... men jag tror ni fattar iden.
WaitEx.java (main)
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
class WaitEx {
public static void main(String\[\] args) {
Waiter w = new Waiter();
w.start();
Caller c = new Caller(w);
c.notifyWaiter();
} // main
}
Waiter.java
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
public class Waiter extends Thread {
boolean keeprunning = true;
public Waiter (){
System.out.println("Waiter created");
}
public synchronized void alarmbell(){
notify();
}
private synchronized void waitForNotify(){
System.out.println("Waiter is waiting");
try{
wait();
}
catch(Exception e) {e.printStackTrace();}
System.out.println("Waiter notified");
keeprunning=false;
}
public void run(){
System.out.println("Thread:"+this.getName());
while(keeprunning){
waitForNotify();
}
}
}// Waiter
Caller.java
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
public class Caller {
Waiter waiter;
public Caller (Waiter w){
waiter = w;
System.out.println("Caller created");
}
public void notifyWaiter() {
try{
Thread.currentThread().sleep(10\*1000);
}
catch(Exception e){}
System.out.println("Notifying...");
waiter.alarmbell();
}
}// Caller
/Lime (gör nästan en Ernst...)
------------------
Praeterea conseo microsoftenem esse delendam.
- modernt latinskt ordspråk