我们在Java中使用以下语法。
public synchronized void count() {
count--;
}
可以像下面这样进行修改。
public void count() {
synchronized(this) {
count--;
}
}
我的问题是,为什么我们不能在Java中编写如下代码?
public void count() {
synchronized {
count --;
}
}
事实上,我想了解b / w synchronized(this)
和synchronized(other)
答案 0 :(得分:2)
你不能像下面提到的代码那样编写代码。
同步块始终用于锁定任何共享资源的对象。 同步块的范围小于方法。这就是synchronized块和方法之间的区别。
class Table{
void printTable(int n){
synchronized(this){//synchronized block
for(int i=1;i<=5;i++){
System.out.println(n*i);
try{
Thread.sleep(400);
}catch(Exception e){System.out.println(e);}
}
}
}//end of the method
}
上面是同步块的示例,它阻止其他线程在同一对象上进行同步。