gpt4 book ai didi

java - 幂等方法是什么意思,调用java.lang.AutoCloseable的close方法有什么副作用?

转载 作者:IT老高 更新时间:2023-10-28 20:27:46 26 4
gpt4 key购买 nike

java.lang.AutoCloseable 的 close() 方法的 Java 文档说

Note that unlike the close() method of Closeable, this close() method is not required to be idempotent. In other words, calling this close method more than once may have some visible side effect, unlike Closeable#close() which is required to have no effect if called more than once. However, implementers of this interface are strongly encouraged to make their close methods idempotent.


幂等方法是什么意思,两次调用这个close()方法有什么副作用?

既然接口(interface) Closeable 扩展了 AutoCloseable 为什么在 Closeable 接口(interface)的关闭中看不到副作用?

最佳答案

幂等意味着您可以多次应用该操作,但一次调用的结果状态将与多次调用的结果状态无法区分。简而言之,多次调用该方法是安全的。实际上,第二次和第三次(等等)调用对程序的状态没有明显的影响。

所以如果你关闭这个对象一次,然后它就关闭了,你就没有足够的信息来知道它是否是幂等的。但是,如果你关闭它两次,第一次关闭,但第二次抛出异常,它显然不是幂等的。另一方面,如果你关闭它一次,然后关闭它两次,并且第二次关闭导致项目以相同的方式保持关闭(可能是noop),那么它是幂等的。

一种实现幂等Closeable的技术可以是:

public class Example implements Closeable {

private boolean closed;

public Example() {
closed = false;
}

public void close() {
if (!isClosed()) {
closed = true;
}
}

public boolean isClosed() {
return closed;
}
}

现在很明显,如果 close() 被调用一次或多次,通过 isClosed() 的所有状态返回将永远返回 true。因此,方法 close() 将被认为是幂等的。

关于java - 幂等方法是什么意思,调用java.lang.AutoCloseable的close方法有什么副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19320115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com