我们知道,同步的关键在于锁资源,对于同步的方法或者代码块来说,必须获得对象锁才能够进入同步方法或者代码块进行操作:
1、对于代码块,对象锁即如synchronized(abc){}中的abc;
2、如果采用方法method级别的同步,则对象锁即为method所在的对象,对象采用单例模式可以使用非静态方法;
3、如果是静态方法--------这个当初最难理解---------对象锁即指method所在的Class对象(唯一),学了Java类后,你们都理解这个对象.class的唯一性了吧;
对于同步静态方法,对象锁就是该静态放发所在的类的Class实例,由于在JVM中,所有被加载的类都有唯一的类对象,不管我们创建了该类的多少实例,但是它的类实例仍然是一个!
|
|