Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo Leute!
Ich habe da mal ein kleines Problem. In den Büchern(z.B. das deutsche Buch zur SCJP-Prüfung) lese ich, dass ich die Methode wait() nur bei synchronized() verwendet werden darf. Außerdem muss sich der Aufruf der Methode in einem try-catch - Block befinden. Meine Frage ist nun, warum das auch ohne synchronized funktioniert, obwohl immer behauptet wird, dass wait() synchronized() verlangt. Hier mal ein Quellcode-Beispiel, bei dem wait() auch ohne synchronized(9 verwendet wird und es zu keinem Compilerfehler oder Laufzeitfehler kommt.
Code:
public class TwoThreads {
static Thread laurel, hardy;
public static void main(String[] args) {
laurel = new Thread() {
public void run() {
System.out.println("A");
try {
hardy.sleep(1000);
} catch (Exception e) {
System.out.println("B");
}
System.out.println("C");
}
};
hardy = new Thread() {
public void run() {
System.out.println("D");
try {
laurel.wait();
} catch (Exception e) {
System.out.println("E");
}
System.out.println("F");
}
};
laurel.start();
hardy.start();
}
}
Wäre euch wirklich dankbar für eine Antwort, denn das irritiert mich ein wenig.
Tschau und danke im Voraus sagt René!
java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at TwoThreads$2.run(TwoThreads.java:20)
dass ich die Methode wait() nur bei synchronized() verwendet werden darf.
Was heißt "darf". Man DARF natürlich bei einem Array auch af das "-1"te Element zugreifen. Gut, es gibt dann eine Exception. Aber ich bin anti-autoritär erzogen worden, und darum DARF ich alles....
Was heißt "darf". Man DARF natürlich bei einem Array auch af das "-1"te Element zugreifen. Gut, es gibt dann eine Exception. Aber ich bin anti-autoritär erzogen worden, und darum DARF ich alles....
Hallo!
Danke für die Antwort. Nun sehe ich da besser durch und weiß so zumindestens, dass es zu einem Laufzeitfehler und nicht zu einem Compilerfehler kommt.
Tschau!