同步方法递归调用自身。这是否有问题?
- 论坛
- 同步方法递归调用自身。这是否有问题?
10 浏览
同步方法递归调用自身。这是否有问题?
这个问题的关键是说明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异常。显然,synchronized并不能阻止对同一线程的访问。
这是一个bug吗?