假设有以下代码:
class MyClass {
synchronized void myMethod1() {
//code
}
synchronized void myMethod2() {
//code
}
}
现在假设
myMethod1()
和myMethod2()
访问不同的数据;现在,如果有两个线程,则线程A仅调用myMethod1()
,线程B仅调用myMethod2()
。如果线程A正在执行
myMethod1()
,即使线程B不访问相同的数据并且没有理由,线程B也会阻塞在myMethod2()
上等待吗?据我所知,同步方法对实例方法使用this
对象的监视器,对静态函数使用MyClass.class
对象的监视器。 最佳答案
您的所有假设都是正确的。如果没有共同的数据,则没有理由在方法级别进行同步。