java - synchronized(User Defined.class) 和 synchronized(define 1.getClass()) 有区别吗?

标签 java

最近在学习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/

相关文章:

java - 为什么我的音频播放会卡住ActionListners?

java - 如何在 UNIX 上找到正在运行的 jar 文件路径?

java.net.UnknownHostException : http://localhost:8082/consume/create

java - Android "gps requires ACCESS_FINE_LOCATION"错误,即使我的 list 文件包含此

java - 升级到 Java 8 导致单元测试中的 Orika 映射器 java.io.IOException : invalid constant type: 15 at 142

java - BlueJ 中的数组列表搜索

java - "text"和新字符串 ("text"之间有什么区别?

java - Struts 2 程序运行问题

java - 从 JSF 1.2 迁移到 JSF 2.0

java - 我只需要存储信用卡的最后 4 位数字