2、继续执行。先看看下面的代码: sychronized关键字只和一个对象实例绑定 class Test { public synchronized void method() { } } public class Sync implements Runnable { private Test test; public void run() { test.method(); } public Sync
3、(Test test) { this.test = test; } public static void main(String[] args) throws Exception { Test test1 = new Test(); Test test2 = new Test(); Sync sync1 = new Sync(test1); Sync sync2 = new Sync(test2); new Thre
4、ad(sync1).start(); new Thread(sync2).start(); } } 在Test类中的method方法是同步的。但上面的代码建立了两个Test类的实例,因此,test1和test2的method方法是分别执行的。要想让method同步,必须在建立Sync类的实例时向它的构造方法中传入同一个Test类的实例,如下面的代码所示:Sync sync1 = new Sync(test1); 不仅可以使用synchronized来同步非静态方法,也可以使用synchronized来同步静态方法
5、。如可以按如下方式来定义method方法:class Test { public static synchronized void method() { }} 建立Test类的对象实例如下:Test test = new Test(); 对于静态方法来说,只要加上了synchronized关键字,这个方法就是同步的,无论是使用test.method(),还是使用Test.method()来调用method方法,method都是同步的,并不存在非静态方法的多个实例的问题。 在23种设计模式中的单件(Singleton)模式如果按