class public Test
{
private int counter;
public synchronized change()
{
counter++;
}
public change2()
{
synchronized(this){
counter--;
}
}
}
我们可以同时调用change和change2吗?
答案 0 :(得分:3)
名称与此无关。 锁定的是对象(不是变量,不是引用)。
如果一个线程已经开始执行一个在一个对象上同步的块,那么尝试在同一个对象上同步的任何其他线程都将阻塞并等待,直到该原始线程完成其块的执行。