你不是真正的懂Synchronized

你不是真正的懂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)