java - 如果我在同一个类上同步了两个方法,它们可以同时运行吗?

标签 java multithreading synchronized java-threads

如果我在同一个类上同步了两个方法,它们是否可以同时在同一个对象上运行?例如:

class A {
    public synchronized void methodA() {
        //method A
    }

    public synchronized void methodB() {
        // method B
    }
}

我知道我不能在两个不同线程中对同一个对象运行两次 methodA()methodB() 中的相同内容。

但是我可以在 methodA() 仍在运行的同时在不同的线程上运行 methodB() 吗? (同一个对象)

最佳答案

这两种方法都会锁定同一个监视器。因此,您不能同时在不同线程的同一个对象上执行它们(两种方法中的一种会阻塞,直到另一种完成)。

关于java - 如果我在同一个类上同步了两个方法,它们可以同时运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15438727/

相关文章:

java - 我可以对 2 个 JComboBox 内的项目进行数学计算吗?

java - 为什么java.util.concurrent.atomic.AtomicBoolean内部是用int实现的?

multithreading - Spring @Async 和 AbstractRoutingDataSource

c# - 将参数传递给线程

java - 队列中的非法监视器

java - 同步线程对象的run()方法

java - kotlin 类在 variant.javaCompiler.doLast 上不可用

multithreading - 有什么方法可以在生成的线程内调用闭包吗?

java - 部分方法的Spring和同步

java - 无法在模拟器和设备上加载 Android Mapview Activity