嵌套的synchronized关键字

Hos*_*ani 39 java synchronization

我在Java中有这个代码:

    public void doSomeThing() {
        synchronized (this) {
            doSomeThingElse();
        }
    }
    public void doSomeThingElse() {
        synchronized (this) {
            // do something else
        }
    }
Run Code Online (Sandbox Code Playgroud)

这段代码能阻止吗?我的意思是,这段代码可以等待吗?

Kis*_*aki 50

正如java文档描述可重入锁定:

线程可以获取它已拥有的锁

第二个同步块使用相同的锁,因此总是可用的,因为已经在外部方法中获取了锁.

不,不会有僵局.


fas*_*ava 8

如果一个线程拥有锁定this,它将进入其他synchronized方法/块,如黄油中的热刀.

  • 它会分裂我的对象?那个比喻...... (8认同)