Java方法同步使用不当?

假设有以下代码:

class MyClass {
    synchronized void myMethod1() {
        //code 
    }

    synchronized void myMethod2() {
        //code
    }
}

现在假设myMethod1()和myMethod2()访问不同的数据;现在如果有两个线程,则线程A只调用myMethod1()而线程B只调用myMethod2().

如果线程A正在执行myMethod1(),那么即使它们没有访问相同的数据并且没有理由,它会阻塞B阻塞等待myMethod2()吗?据我所知,synchronized方法使用此对象的监视器作为静态函数的方法和MyClass.class对象的监视器.

解决方法:

你的所有假设都是正确的.在没有数据共同的情况下,没有理由在方法级别进行同步.

上一篇:Linux中等效的WaitForSingleObject和WaitForMultipleObjects?


下一篇:具有Java中的重入锁定和条件的生产者消费者方案