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属地 江西
    举报
    评论
    收藏