我是线程安全编程的新手,并且想知道我是否有类似下面的内容,一旦编译并运行,它就不会死锁吗?

public class Foo
{
    protected CustomClass[] _mySynchedData = new CustomClass[10];

    public void processData()
    {
        synchronized(_mySynchedData) {
            // ...do stuff with synched variable here
        }
    }
}


public class Bar extends Foo
{

    @Override
    public void processData()
    {
        synchronized(_mySynchedData) {
            // perform extended functionality on synched variable here

            // ...then continue onto parent functionality while keeping synched
            super.processData();
        }
    }
}


Bar testObj = new Bar();

// Deadlock?
testObj.processData();

最佳答案

您的代码仅显示一个线程。

仅使用一个线程,就无法获得任何死锁。

添加:
Java语言支持他们正式称为reentrant synchronization的内容。
这基本上意味着单个线程可以重新获取它已经拥有的锁。

10-05 19:13