-1
protected static Object lock; 
public void awake(){ 
    synchronized (lock){ 
     if(Thread.currentThread().isAlive()){ 
     Thread.currentThread().notify(); 
     } 
    } 
} 

ich in einem synchronisierten Block diesen Code verwende, so dass meine Hauptmethode einen Monitor des Gewindes hat und erhält keine IllegalMonitorStateException.Nullpointer Ausnahme, wenn synchronisierten Block mit

Ich verstehe nicht, warum dies mir eine Nullpointer-Ausnahme gibt. Der Thread muss aktiv sein, um den Befehl thread.notify auszuführen, und die Sperre ist ein statisches Objekt. Nichts kann null sein. Irgendwelche Ideen?

+0

Sie müssen zuerst "lock" einen Wert ungleich Null zuweisen. –

+1

Sperre ist Null in Ihrem Snippet ... ein Debugger oder ein Ausdruck würde dies auch verifizieren. –

+0

Das verknüpfte Duplikat gibt nicht wirklich an, dass Sie einen Wert ungleich null haben müssen, der mit 'synchronized' verwendet wird, aber das ist schnell behoben ... – Makoto

Antwort

0

Nur weil es statisch ist, bedeutet es nicht, dass es niemals null sein wird. Sie benötigen protected static Object lock = new Object();

Verwandte Themen