【问题标题】:What it means for Disposable.dispose() to be idempotent? [duplicate]Disposable.dispose() 幂等意味着什么? [复制]
【发布时间】:2020-12-14 08:57:05
【问题描述】:

RxJava documentation for Disposable.dispose 状态

dispose资源,操作应该是 幂等的。

根据维基百科对Idempotence的定义

幂等性是数学中某些运算的性质,并且 计算机科学,它们可以被多次应用而无需 在初始应用程序之外更改结果。

这是否意味着在同一个Disposable 上多次调用dispose() 方法不会有任何附加效果?会不会只处理一次相关资源?

这引发了另一个问题 - 那么isDisposed() 方法的需求是什么?不就是在再次丢弃之前检查一次性物品是否被丢弃吗?

【问题讨论】:

  • "不是要检查一次性物品是否被丢弃再丢弃吗?"这不仅仅是为了那个。某物是否已处置也可能对其他事物有用,例如当您想将其用于某事,但又不想使用已处置的对象时。
  • @Sweeper,知道了,谢谢。

标签: java rx-java rx-android


【解决方案1】:

您回答了自己的问题。

这是否意味着在同一个 Disposable 多个上调用 dispose() 方法 次会不会有什么额外的影响?是否会处置相关 资源只有一次?

这是正确的。 关于isDisposed()方法,它的目的可能是在你开始使用之前检查一个资源是否已经被释放。

【讨论】:

    【解决方案2】:
    1. 是的,就是这样。

    2. isDisposed() 不会阻止任何人拨打dispose() 两次。想想调用一个无条件调用dispose()的方法...

    【讨论】:

      猜你喜欢
      • 2012-05-02
      • 2020-09-24
      • 2013-06-05
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      • 2023-03-10
      • 2014-03-23
      • 2020-09-06
      相关资源
      最近更新 更多