美文网首页
你不是真正的懂Synchronized

你不是真正的懂Synchronized

作者: 马克99号 | 来源:发表于2018-05-29 20:25 被阅读40次

    你不是真正的懂Synchronized,你的懂只是你穿的保护色。

    前言

    Synchronized作为用的比较多的同步工具,经常被我们用到,下面有5道题,
    Queston1

    Class Test{
           Public void Synchronized foo();
           Public void Synchronized bar();
    }
           t1: new Test().foo();
           t2: new Test().foo();
    

    t1和t2 Test对象的foo方法可以同时执行吗?


    Queston2

    Class Test{
           Public void Synchronized foo();
           Public void Synchronized bar();
    }
           Test test = new Test();
           t1: test.foo();
           t2: test.foo();
    

    t1和t2 Test对象的foo方法可以同时执行吗?


    Queston3

    Class Test{
           Public void Synchronized foo();
           Public void Synchronized bar();
    }
           Test test = new Test();
           t1: test.foo();
           t2: test.bar();
    

    t1 Test对象的foo方法和t2 Test对象的bar方法可以同时执行吗?


    Queston4

    Class Test{
           Public static void Synchronized foo();
           Public void Synchronized bar();
    }
           Test test = new Test();
           t1: test.foo();
           t2: test.bar();
    

    t1 Test对象的foo方法和t2 Test对象的bar方法可以同时执行吗?


    Queston5

    Class Test{
           Public static void Synchronized foo();
           Public void Synchronized bar();
    }
           Test test = new Test();
           t1: new Test.foo();
           t2: new Test.foo();
    

    t1和t2 Test对象的foo方法可以同时执行吗?


    答案是YNNYN

    归结为一句话就是:非静态方法为synchronized(this) ,静态方法为 synchronzied(Class)。

    END

    相关文章

      网友评论

          本文标题:你不是真正的懂Synchronized

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