多线程为什么在对象上而不是java中的代码上创建锁
我们有以下Java语法
public synchronized void count() {
count--;
}
这可以像下面这样修改
public void count() {
synchronized(this) {
count--;
}
}
我的问题是,为什么我们不能用Java编写如下代码
public void count() {
synchronized {
count --;
}
}
事实上,我想理解b/wsynchronized(this)
和synchronized(other)
之间的区别
# 1 楼答案
你不能像下面提到的那样编写代码
同步块始终用于锁定任何共享资源的对象。 同步块的范围小于该方法。这就是同步块和方法之间的区别
上面是一个同步块的示例,它阻止其他线程在同一对象上同步