线程1在java同步方法1中执行,线程2可以在java同步方法2中执行吗?

Kev*_*vyp 6 java concurrency multithreading synchronization

想知道是否有人可以帮我解决这个问题.(学生)

假设我们有两个线程,"Thread1"和"Thread2".如果Thread1在方法1中执行,那么Thread2可以在method2中执行吗?

void method1() {
    synchronized (this) {
    }
}

void method2() {
    synchronized (this) {
    }
}
Run Code Online (Sandbox Code Playgroud)

我想是的,Thread2可以输入,因为"this"只是该方法的实例或者没有,因为"this"是该类的实例而Thread1保留在它上面.

Jon*_*eet 9

没有与特定方法关联的监视器 - 有一个与对象关联的监视器.因此,如果您尝试在两个方法中同步对象,则第二个线程将阻塞,直到第一个线程释放监视器.

(就个人而言,我不喜欢同步this- 我同步对一个只有我的班级才能访问的对象的引用.但这是另一回事.)