假设有以下代码:
class MyClass {
synchronized void myMethod1() {
//code
}
synchronized void myMethod2() {
//code
}
}
现在假设myMethod1()和myMethod2()访问不同的数据;现在如果有两个线程,则线程A只调用myMethod1()而线程B只调用myMethod2().
如果线程A正在执行myMethod1(),那么即使它们没有访问相同的数据并且没有理由,它会阻塞B阻塞等待myMethod2()吗?据我所知,synchronized方法使用此对象的监视器作为静态函数的方法和MyClass.class对象的监视器.
解决方法:
你的所有假设都是正确的.在没有数据共同的情况下,没有理由在方法级别进行同步.