Java 关于类级锁
在一次Java访谈中,有人问线程上下文,有一个类ABC由两个静态同步方法Java 关于类级锁,java,multithreading,Java,Multithreading,在一次Java访谈中,有人问线程上下文,有一个类ABC由两个静态同步方法m1()和m2()组成,如果T1锁定了方法m1(),则有两个线程T1,T2那么同时T2是否有可能锁定m2()方法,我回答说因为m1()和m2()是静态同步的,所以它们具有类级锁,所以如果T1线程锁定m1()方法,则在T1从m1()方法释放锁之前,其他线程不能同时锁定m1(),但同时线程T2可以锁定方法m2(),请告知这是正确的 错了。。。同步方法上的锁会阻止所有其他同步方法调用在Java中,不获取方法上的锁,而是获取对象上的
m1()
和m2()
组成,如果T1
锁定了方法m1(),则有两个线程T1
,T2
那么同时T2
是否有可能锁定m2()
方法,我回答说因为m1()
和m2()
是静态同步的,所以它们具有类级锁,所以如果T1
线程锁定m1()
方法,则在T1
从m1()
方法释放锁之前,其他线程不能同时锁定m1()
,但同时线程T2
可以锁定方法m2()
,请告知这是正确的 错了。。。同步方法上的锁会阻止所有其他同步方法调用在Java中,不获取方法上的锁,而是获取对象上的锁。同步静态方法隐式使用类对象作为锁。当然,同一个类中的两个方法都将争夺同一个锁,并且不允许并发执行。那么您的意思是说,如果T1线程在静态同步方法m1()上获得类级锁,那么同时线程T2不能在另一个静态同步方法m2()上获得锁由于线程T1已经在方法m1()上设置了类级锁。请您用一个小示例演示一个方法,以便掌握更多信息。提前谢谢。是的,没错。。。我不能给你一个比你写的更详细的例子。如果你想的话,试着输入它,你会看到的…谢谢你完美的解释,你能提供一些例子来说明这一点吗,这样会有助于理解更多。提前谢谢。