【发布时间】:2013-02-28 18:01:05
【问题描述】:
假设我在某个类上有一个同步方法:
abstract class Foo {
public synchronized void foo() { // synchronized!
// ...
};
}
并且我不使用使用同步修饰符覆盖它:
class Bar extends Foo {
@Override
public void foo() { // NOT synchronized!
super.foo();
// ...
}
}
我有几个关于这种情况的具体问题:
- 被覆盖的方法是否也会被隐式同步?
- 如果没有,
super-call 会同步吗? - 如果没有
super-call,是否会同步任何内容? - 有没有办法强制覆盖方法使用
synchronized(我注意到接口内的抽象方法定义或方法定义不允许使用同步关键字)?
【问题讨论】:
-
bugs.sun.com/bugdatabase/view_bug.do?bug_id=4294756 同步不是方法签名的一部分,而是方法实现的一部分。
标签: java overriding synchronized