synchronized 锁了类,那再锁实例还能锁住吗?冲突吗?
1 个回答
世间万物,唯有过往伤人最深。孙慧`Synchronized` 锁住类和锁住实例是两种不同的锁机制,它们互不干扰。 ### 原因: 1. **类级锁**:当使用 `synchronized` 修饰 `static` 方法或显式锁定类对象时,锁住的是 **类的 `Class` 对象**,所有实例共享同一把锁。 示例: ```java public synchronized static void method1() { // 类级锁 // 锁住 Example.class } ``` 2. **实例级锁**:当使用 `synchronized` 修饰非 `static` 方法时,锁住的是 **当前实例对象 `this`**,每个实例有自己的锁。 示例: ```java public synchronized void method2() { // 实例级锁 // 锁住当前实例对象 this } ``` 3. **互不干扰**:类级锁和实例级锁控制的资源不同,**锁住类**不会影响**锁住实例**。你可以同时锁住类和不同实例,且它们是独立的。发布于 2025-01-16 14:55 •IP属地 江西举报评论收藏
公众号进入网站体验更佳

