这个问题的关键是要说明的Java不工作如我所料。
你会如何期待下面的代码的行为?
public class SynchTester {
private static SynchTester synchTester;
public synchronized static SynchTester getSynchTester(){
if(synchTester==null){
synchTester = new SynchTester();
}
return synchTester;
}
private SynchTester() {
SynchTester myTester = getSynchTester();
}
public static void main(String[] args) {
SynchTester tester = SynchTester.getSynchTester();
}
}
我希望它与死锁等待递归来完成挂起,而是它抛出的StackOverflow。 显然,同步不会阻止访问相同的线程。
这是一个错误?