java如何确保重写的方法是同步的
我有一类线程安全的通用代码
该类中的一个方法是抽象的,需要为不同的实现重写
我需要确保或至少向其他开发人员表明,该方法的所有实现都需要是线程安全的
最好的方法是什么
有没有这样的关键字或注释
我已经尝试过abstract synchronized
,但不允许这种关键字组合
你可以在下面搜索框中键入要查询的问题!
我有一类线程安全的通用代码
该类中的一个方法是抽象的,需要为不同的实现重写
我需要确保或至少向其他开发人员表明,该方法的所有实现都需要是线程安全的
最好的方法是什么
有没有这样的关键字或注释
我已经尝试过abstract synchronized
,但不允许这种关键字组合
# 1 楼答案
你不能直接做。你可以做的一件事是让方法是具体的,但调用一个抽象的方法:
这样,doFoo()将始终*在foo()建立的同步下被调用
*除非有人直接调用它,所以你应该命名并记录它,以明确他们不应该这样做
# 2 楼答案
This link to the JLS证实了我们不能将抽象和同步混为一谈
虽然比关键字或标准注释弱得多,但比文档强得多:也许试试Marker interface
这是一个延伸,但可能会有所帮助,因为派生类会做出声明(edit:new example测试声明):
# 3 楼答案
从Synchronized method in subclass
你也可以看看A synchronized method in the superclass acquires the same lock as one in the subclass.