每当使用synchronized块时都会出现NullPointer异常

时间:2016-10-12 16:09:51

标签: java multithreading nullpointerexception synchronization

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

我在同步块中使用此代码,以便我的main方法有一个线程监视器,并且没有收到IllegalMonitorStateException。

我不明白为什么这会给我一个nullpointer异常。线程必须处于活动状态才能执行thread.notify命令,并且锁是一个静态对象。什么都不能为空。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

仅仅因为它是静态的并不意味着它永远不会是空的。您需要protected static Object lock = new Object();