Java同步方法锁定对象还是方法?

230
如果我在同一个类中有2个同步方法,但每个方法访问不同的变量,那么2个线程是否可以同时访问这2个方法?锁定是发生在对象上,还是会针对同步方法内部的变量变得更具体?
示例:
class X {

    private int a;
    private int b;

    public synchronized void addA(){
        a++;
    }

    public synchronized void addB(){
        b++;
    }

}

2个线程可以同时访问类X的同一个实例,执行x.addA()x.addB()吗?

11个回答

0

这可能不起作用,因为从Integer到int和反之亦然的装箱和自动装箱取决于JVM,如果它们在-128和127之间,则有很高的可能性两个不同的数字会被散列到相同的地址。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接