如果同一个对象有两个方法会对同一个资源p进行操作,一个方法用synchronized修饰,另一个方法用lock,这个资源p有被锁住吗
就比如一个set方法用syn,一个get方法用lock,然后一个线程去set,一个线程去get,会出现什么情况
如果同一个对象有两个方法会对同一个资源p进行操作,一个方法用synchronized修饰,另一个方法用lock,这个资源p有被锁住吗
就比如一个set方法用syn,一个get方法用lock,然后一个线程去set,一个线程去get,会出现什么情况
锁不住
synchronized是以对象头标识来做到互斥的;
lock锁定是内部AQS办到的;
这两个维护的不是同一个同步队列,所以不会互斥的;
而且就算都要synchronized锁定,如果锁定对象不一样,也不会互斥的;
非静态方法上的synchronized锁定对象是this,静态方法上的锁定对象是Class对象实例;
所以一个类里面的静态同步方法和非静态同步方法也是不互斥的;
希望对你有帮助...