当前位置: 首页 > 面试题库 >

如何确保重写的方法是同步的

养翔
2023-03-14
问题内容

我有一类通用的代码是线程安全的。

该类中的方法之一是抽象的,需要针对不同的实现重写。

我需要确保或至少向其他开发人员标记此方法的所有实现都必须是线程安全的。

做这个的最好方式是什么?

是否有关键字或注释可达到此目的?

我已经尝试过了,abstract synchronized但是不允许使用关键字组合。


问题答案:

您不能直接这样做。您可以做的一件事是将方法具体化,但是调用一个抽象方法:

public synchronized final void foo() {
    doFoo();
}
protected abstract void doFoo();

这样,doFoo()将始终*在foo()建立的同步下被调用。

*除非有人直接调用它,否则您应该命名并记录它以明确表明他们不应该这样做。



 类似资料:
  • 假设我在某个类上有一个同步方法: 我在不使用同步修饰符的情况下覆盖了它: 关于这个场景,我有几个具体的问题: 重写的方法也会隐式同步吗? 如果没有,-call会同步吗? 如果没有-call,会同步任何东西吗? 有没有办法强制覆盖方法使用(我注意到抽象方法定义或接口内的方法定义不允许同步关键字)?

  • 问题内容: 这个问题应该比关于更多。 我有一个子类(在python 2.7中,numpy 1.6.2),并且我发现在对象时未列出的字段名称(因此,ipython的自动完成功能无效)。 为了修复它,我尝试在子类中重写,如下所示: 结果是:。(我发现这里实际上应该在python 3.3中工作…) 作为一种解决方法,我尝试了: 据我所知,这是可行的,但当然并不优雅。 问题: 后一种解决方案对我而言是否正

  • 我们正在编写一个类,它需要非常复杂的逻辑来计算equals()和hashCode()。类似于:

  • 那么,回到问题上来,鉴于微软建议不要在新的开发中使用WebRequest而是使用只提供异步API的HttpClient,我该怎么办呢? 这是我正在做的一些伪代码... 如何实现ProcessStuff()?

  • 问题内容: 我需要在我的没有超类的对象中实现一个深层克隆。 处理超类(即)引发的检查的最佳方法是什么? 一位同事建议我按以下方式处理: 对我来说,这似乎是一个不错的解决方案,但我想将其扔给StackOverflow社区,以查看是否有我可以提供的其他见解。 问题答案: 你绝对必须使用吗?大多数人都同意是坏的。 如果你已经阅读了我书中有关克隆的内容,尤其是你在两行之间阅读的话,你会知道我认为它clon

  • null my Library的核心逻辑 客户将使用我们的库,他们将通过传递builder对象来调用它。然后,我们将通过使用对象构造一个URL,并通过执行该对象对该URL进行HTTP客户端调用,在将响应作为JSON字符串返回后,我们将通过创建对象将该JSON字符串按原样发送给客户。有些客户会调用,有些可能会调用方法,所以我需要在库中分别提供两个方法。 接口: 您将如何实现同步和异步方法给定上述标准