这些天我正在学习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情况)。

10-02 00:06