关于班级锁定

时间:2013-04-11 10:40:16

标签: java multithreading

在一次Java访谈中,有人向线程询问了一个类ABC,它包含两个静态同步方法m1()m2(),并且有两个线程T1T2,如果T1锁定方法m1(),那么同时T2可以锁定m2()方法,我回答说由于m1()m2()是静态同步的,因此它们具有类级别锁定,因此如果T1线程获取m1()方法上的锁,则其他任何线程都无法锁定{ {1}}同时m1()T1方法释放锁定,但同时线程m1()可以锁定方法T2,请告知它是{1}}正确。

2 个答案:

答案 0 :(得分:2)

错误...对synchronized方法的锁定会阻止所有其他同步方法调用

答案 1 :(得分:1)

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