java使用synchronized加锁是锁定某一对象的引用。
方法区:方法区加锁要看加锁的方法是属于类实例方法还是类方法即有没有加static标示符,如果没加static则锁定局域变量this(指向所属类实例的引用)。如果加了static则锁定所属类的CLASS对象的引用。
代码区:代码区域锁定是指定锁定的对象引用。
ps:关于线程加锁-解锁过程有6步操作,锁定对象先从堆拷贝到线程栈,操作完以后再拷贝到堆,书上写是值拷贝,个人认为引用拷贝也未尝不可,以后再研究。
java使用synchronized加锁是锁定某一对象的引用。
方法区:方法区加锁要看加锁的方法是属于类实例方法还是类方法即有没有加static标示符,如果没加static则锁定局域变量this(指向所属类实例的引用)。如果加了static则锁定所属类的CLASS对象的引用。
代码区:代码区域锁定是指定锁定的对象引用。
ps:关于线程加锁-解锁过程有6步操作,锁定对象先从堆拷贝到线程栈,操作完以后再拷贝到堆,书上写是值拷贝,个人认为引用拷贝也未尝不可,以后再研究。