这些天我正在学习Java MutliThread,遇到了一个问题。synced(UserDefine.class)和synceded(define1.getClass())之间有什么区别吗?
define1 is an instance of UserDefine class.
提前致谢 :)
最佳答案
如果define1
存储对具体类型UserDefine
的对象的引用,则没有区别。两种表达
UserDefine.class
和
define1.getClass()
将产生相同的
Class
实例。因此不会有任何区别。如果
define1
存储对任何其他类型的对象(或null
)的引用,则将有所不同。相应的线程会将监视器锁定在其他对象上,否则将抛出NullPointerException
(对于null
情况)。