这似乎很明显,但我想确保我做对了。如果我尝试锁定空引用,这将无法正常工作?因为它使用对象的属性而不是引用?
前任
Object lock = null;
synchronized(lock)
{
}
这似乎很明显,但我想确保我做对了。如果我尝试锁定空引用,这将无法正常工作?因为它使用对象的属性而不是引用?
前任
Object lock = null;
synchronized(lock)
{
}
如果我尝试锁定空引用,这将无法正常工作?
那是对的。如果您NullPointerException
尝试使用null
.
因为它使用对象的属性而不是引用?
不完全是。锁定状态不是通常意义上的属性,因为您无法查询它。但是,是的,状态是对象的一部分。
(但是想一想。锁状态怎么可能是引用的一部分?如果是,您将如何同步this
或作为参数传递的对象引用?引用作为副本传递......和一个对一个副本的更改无法传播到其他副本。如果锁定状态无法传播,则具有自己的引用副本的两个线程无法以任何有意义的方式同步。)
是的。同步在对象本身上。