class Father
{

public synchronized void method_a()
{

}

public void method_b()
{

}
}class Child extends Father
{
@Override
public void method_a()
{

}
@Override
public synchronized void method_b()
{

}
}Father f = new Child();
这样的话, f这个对象调用两个方法都能保证同步么?

解决方案 »

  1.   

    不能,synchronized不是方法签名的一部分。
    Father f = new Child();后f调用method_a不需要获得锁,调用method_b需要锁
      

  2.   

    f调用的是Child(子类)的方法
    所以一般method_a不能保证同步
    method_b能保证同步
    但如果Child的method_a是这样的
    public void method_a()
    {
        super.method_a();

    就不清楚了
    期待LX的给解释
      

  3.   

    method_a不能同步,method_b可以同步。
      

  4.   

    这个问题其实是看掉用的是同步的方法还是非同步的方法。不要和继承混淆,继承下来的只是同名的方法,在出现多太的时候会根据实际对象的类型去调用对应的方法,但是改方法是否能同步,还是要看调用的方法是否是同步方法。lz显然是调用子类的两个方法,当然method_a不能同步,method_b可以同步了。