我有两个线程thread1和thread2
在线程1内
synchronized(lock) {
lock.wait();
if(lock == null)
{execute1}
if(lock != null)
{execute2}
}
在线程2内
synchronized(lock) {
lock.notify();
lock = null;
}
首先调用thread1,然后调用thread2。
在 thread1 调用 wait 之后,它释放它的锁。并且thread2调用notify并将lock设置为null。
现在,当 thread1 再次尝试获取锁时,为什么它没有抛出任何异常。由于 lock 设置为 null 并且 thread1 尝试获取该锁,因此在尝试获取锁时不应该抛出空指针异常。
如果它没有抛出任何异常,则 thread1 仍在读取锁值不为空。那么它不应该执行语句 {execute2} 吗?