Hey Leute habe mal eine Frage.
Ich versuche mit threads zu arbeiten aber bekomme immer die folgende Fehlermeldung, obwohl ich eigentlich den einen Thread mitm lock belege:
Laut Meldung tritt der Fehler immer auf, sobald die Methode notify() aufgerufen wird. Was mache ich verkehrt????:L
mfg newbie
Ich versuche mit threads zu arbeiten aber bekomme immer die folgende Fehlermeldung, obwohl ich eigentlich den einen Thread mitm lock belege:
Code:
java.lang.IllegalMonitorStateException: object not locked by thread before notify()
Java:
private static Object lock = new Object();
// meine main
Thread t1 = new Thread(new Runnable() {
public void run() {
proceed();
}
});
Thread t2 = new Thread(new Runnable() {
public void run() {
ladeBalken();
}
});
t2.start();
t1.start();
}
// Methoden
public static void proceed() {
synchronized (lock) {
try {
System.out.println("vorfahrt gewähren");
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
kHandler.post(new Runnable() {
@Override
public void run() {
System.out.println("verarbeite nun die PDf");
pdfReaderActivity.lokalOperation();
lock.notify();
}
});
}
}
public static void ladeBalken() {
synchronized (lock) {
try {
System.out.println("ladeBalken gestartet");
System.out.println("ladeBalken legt sich schlafen");
System.out.print("schließe Fenster");
lock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Laut Meldung tritt der Fehler immer auf, sobald die Methode notify() aufgerufen wird. Was mache ich verkehrt????:L
mfg newbie