-1

在一次Java面试中,有人用线程的上下文询问有一个类ABC由两个静态同步方法组成 m1()m2()并且有两个线程T1T2如果T1对方法进行锁定,m1()那么是否可以T2同时获取锁定m2()方法,我回答说,因为m1()m2()是静态同步的,所以它们具有类级别T1的锁定,所以如果线程锁定m1()方法,那么没有其他线程可以m1()同时锁定,直到T1从方法释放锁定m1()但同时时间线程T2可以锁定方法m2(),请指教正确。

4

2 回答 2

2

错误...同步方法上的锁会阻塞所有其他同步方法调用

于 2013-04-11T10:44:48.070 回答
1

在 Java中获取的不是方法上的锁,而是对象上的锁。同步静态方法隐式使用类对象作为锁。自然地,同一个类中的两个方法都会竞争同一个锁,并且不允许同时执行。

于 2013-04-11T11:10:59.483 回答