我是线程安全编程的新手,并且想知道我是否有类似下面的内容,一旦编译并运行,它就不会死锁吗?
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的内容。
这基本上意味着单个线程可以重新获取它已经拥有的锁。