![](/img/trans.png)
[英]Does java automatically close AutoClosable-s declared in try block body?
[英]Should I block on close method of an asynchronous AutoClosable resource in Java?
我有一个异步资源,我想使其自动关闭。 我的资源产生了一个线程并轮询内部读取器。
我应该阻塞关闭方法,直到内部资源关闭还是可以。
我的代码是这样的...
public class MyReader implements AutoClosable {
ActualReader readerImpl = ...;
public void close() {
shutdownRequested.set(true);
}
public void start() {
while(!shutdownRequested) {
int someInt = readerImpl.poll(100);
}
readerImpl.close()
}
}
您的资源应该是异步的。 因此,该方法不应阻塞。
this尽管此规则可能有合理的例外,但我要说的是,通常应该在close()
上进行阻塞。
基本原理: AutoCloseable的close()
建议抛出通用异常。 尽管没有义务抛出这样的Exception(现在您没有这样做),但是实际上您在禁止自己将来改变它。 通过使close()
的内部逻辑异步,您实际上无法传递关闭资源时可能发生的任何不当行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.