1:线程B将等待,直到线程A释放对同步对象的锁定之后,线程A将释放对同步对象的锁定并执行代码。
2:
Singleton.class是对象,代表那个类。您正在对其进行同步,因为
_instance-object为空。
public synchronized void method1(){...}在对象上进行同步,在您调用该方法时,这意味着,如果您这样调用它,则2个线程将彼此等待:
final A a = new A();new Thread(new Runnable(){ public void run(){ a.method1(); }}).start();a.method1();但是如果您在不同的Objects上调用,则两个线程将并行执行:
A a = new A();final A b = new A();new Thread(new Runnable(){ public void run(){ b.method1(); }}).start();a.method1();最后一个问题:对,线程B将不会进入方法2,因为同步方法锁定在对象上
顺便说一句。
public synchronized void method1(){...}等效于:
public void method1(){ synchronized(this){ ... }}


