美文网首页
如果一个对象有多个方法加了 synchronized,那么该对象

如果一个对象有多个方法加了 synchronized,那么该对象

作者: 骇客与画家 | 来源:发表于2019-12-26 22:29 被阅读0次

    答案是一把锁 🔐

    代码示例:

    public class Test {
    
        public synchronized void method1(){
            // do something
        }
    
        public synchronized void method2(){
            // do something
        }
    
    }
    

    对象锁是在一个类的对象上加的的锁,只有一把,不管有几个方法进行了同步。

    这些同步方法都共有一把锁,只要一个线程获得了这个对象锁,其他的线程就不能访问该对象的任何一个同步方法。

    对象锁:

    synchronized 修饰实体里的非静态变量,锁的是对象

    synchronized 修饰代码块,锁的是对象

    synchronized 修饰非静态方法,锁的是对象

    使用对象锁的情况,只有使用同一对象的线程才会受锁的影响,多个对象调用同一方法也不会受影响。

    类锁:

    synchronized 修饰类中的静态变量

    synchronized 修饰静态方法

    synchronized 修饰类.class

    类锁是所有线程共享的锁,所以同一时刻,只能有一个线程使用加了锁的方法或方法体,不管是不是同一个实例。

    参考文章:

    https://blog.csdn.net/qa275267067/article/details/79804713

    https://www.cnblogs.com/fengzheng/p/12066239.html

    本文由博客一文多发平台 OpenWrite 发布!
    个人公众号《骇客与画家》,欢迎关注

    相关文章

      网友评论

          本文标题:如果一个对象有多个方法加了 synchronized,那么该对象

          本文链接:https://www.haomeiwen.com/subject/muxroctx.html