最近在学习Java MutliThread,遇到一个问题,synchronized(UserDefine.class)和synchronized(define1.getClass())有什么区别吗?
define1 is an instance of UserDefine class.
提前致谢:)
最佳答案
如果 define1
存储对具体类型 UserDefine
对象的引用,则没有区别。两种表达方式
UserDefine.class
和
define1.getClass()
将产生相同的 Class
实例。因此不会有任何区别。
如果define1
存储了对任何其他类型(或null
)对象的引用,那么就会有所不同。相应的线程会将监视器锁定在不同的对象上,否则将抛出 NullPointerException
(对于 null
情况)。
关于java - synchronized(User Defined.class) 和 synchronized(define 1.getClass()) 有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30461854/