当你把整个函数标记为“同步”(而不是函数中的一段代码)时,
你不能给定这次“同步”发生在哪一个对象锁上;
因为那样的说明在Java语法中是非法的。
整个函数的同步,是发生在this对象锁上的,但是
若是一个静态方法,则发生在类对象本身。
你不能给定这次“同步”发生在哪一个对象锁上;
因为那样的说明在Java语法中是非法的。
整个函数的同步,是发生在this对象锁上的,但是
若是一个静态方法,则发生在类对象本身。
{
synchronized method()
{
}
}你不需要指出执行该同步方法所需拥有的对象锁,如:synchronized {this} method()
{
}这样写是非法的,JVM会默认将 this object作为同步的对象锁。
如果该方法是静态的, 则默认同步锁为该类对象, 而不是 this.(注意:类对象对于某个类来说,只有一个)。