Netty中`sync`和`await`的区别

16

Netty 中的 syncawait 方法有何区别?两者都会阻塞当前线程吗?

谢谢。


我不知道Netty是什么,但在Google的帮助下,以下是它们之间的区别:await - sync - Maroun
1
@MarounMaroun 这可能就是问题所在 - 这些文档写得很差,会让大多数人想知道为什么会有一个看起来做同样事情的同步和等待方法。 - nos
确切地说,我阅读了那些文档,但是无法理解它们之间的区别。 - simao
如果这个Future失败了,"and rethrows the cause of the failure if this future failed" 的区别不就出来了吗? - Maroun
1个回答

13

我感觉不太赞同,这些文档并不写得很差。它们存在,但需要阅读API。然而,如果你认为有一些文档缺失,Netty非常欢迎贡献;-)

所以对于你的问题:区别实际上在于sync()会重新抛出失败,如果此future失败,而await()则不会(如果你需要异常,你需要使用cause()方法向future对象请求)。

参见API:

http://netty.io/4.1/api/io/netty/channel/ChannelFuture.html#sync()


1
sync()的接口仅会抛出InterruptedException异常。它如何能够重新抛出其他异常,例如IOException? - Jochen
只有InterruptedException是被允许的,但在其他情况下,这是将承载异常的ChannelFuture。请参见http://netty.io/4.1/api/io/netty/util/concurrent/Future.html#cause()。 - Frederic Brégier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接