2013-04-11 52 views
-1

在一个Java采访时有人问了上下文线程有一个ABC类包括两个静态同步方法m1()m2(),并有两个线程T1T2,如果T1呈现出锁方法m1()然后在同一时间有可能是T2采取锁m2()方法,我回答说,因为m1()m2()是静态的同步,所以,所以如果T1线程需要的锁m1()方法则没有其他线程他们有一流水平的锁可同时锁定m1(),直至T1从0123解锁方法,但同时线程T2可以锁定方法m2(),请告知它是正确的。关于一流水平锁定

回答

1

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

+0

非常感谢你的完美探索,你可以请任何示例显示此建议,所以这将有助于掌握更多。提前感谢。 – 2013-04-11 11:16:57

2

错误的...在一个同步方法块锁定所有其他同步方法调用

+0

所以你的意思是说,如果T1线程在静态同步方法m1()上接受一个类级锁定,那么同时线程T2不能锁定另一个静态同步方法m2(),因为线程T1已经把类级锁在方法m1()上,你可以用一个小例子来展示一下,以便掌握更多。提前致谢。 – 2013-04-11 10:53:00

+0

是的......我不能给你一个比你写的更多的数据记录的例子。只要试图补充它,如果你想,你会看到... – jamp 2013-04-11 11:01:14